删除属性的定义的`加载从<体>`

0

的问题

我已经在这方面的工作几个小时和我在点我觉得我可能会试图完成一些行不通的。 任何意见或见解绝对是赞赏!

使用的情况下,我们需要针对中断的浏览器的DOM分析之前有机会画画的 <body> 元素。 为此,我使用了这个衬垫作为第一个脚本叫我 <head> 元件:

document.replaceChild(document.createElement('html'), document.children[0]);

这成功地防止的浏览器打电话给任何随后的剧本, <body> 元素仍然是联合国呈现。 然而,如果包括一个标记 onload 属性 <body> 元,这一职能或代码仍然是所谓通过浏览器。

如上拦截DOM分析是在 <head>我不能使用 document.body.removeEventListener() 以下事件的听众的,因为 body 元素并不存在。 设置 window.onloadnull 没有任何效果,而且也不试图拦截设置的 window.onload 使用 Object.defineProperty(window, 'onload', {...}). 在每种情况下, onload 功能或陈述仍然得到称为。

抢占显而易见的问题,为什么我不能只是避免使用 <body onload="...">,使用的情况下是用于开发的工具,因此我试图创建的应急对于某些绝对条件。 如果它不能这样做,它不是杀手我的项目,但我确实想知道 为什么 它不能这样做。

在此先感谢!

events html javascript
2021-11-21 14:39:38
1

最好的答案

2

你可以使用 文档readystateinteractive 状态并复盖 onload 属性。

document.onreadystatechange = () => {
   if (document.readyState === 'interactive') 
      window.onload = null;
}

(加入你的代码从你的意见,对完整性。)

2021-11-21 15:08:35

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................