浏览器如何处理包含内联事件处理程序的废弃/破坏的页面元素

问题描述

使用普通的JavaScript,可以说我有一个以空开头的容器DIV,例如...

<DIV id='myID'></DIV>

然后,我向容器中添加一个或多个新的DIV元素,这些元素具有一个或多个内联处理程序,就像这样...

var myDIV = document.getElementById('myID') 
myDIV.innerHTML = "<div  onmouSEOver=\"hoverme(this);\">TEXT</DIV>";

现在让我们说我以后像这样清空容器...

myDIV.innerHTML = "";

现在假设:

  1. 'innerHTML'字符串中可能包含一个或多个带有一个或多个内联事件的DIV,
  2. 在将容器设置为“”之前,这些事件可能已触发或未触发和/或处理。
  3. 以这种方式“清除”容器后,很可能会再次将包含一个或多个带有内联事件的DIV的另一个字符串添加到容器中。

我的问题是要了解如果在退出页面之前多次重复上述操作,是否会对浏览器产生负面影响。例如...

  1. 添加到原始容器中的元素是否通过将容器内部HTML设置为“”来“销毁”(以及它们的事件),或者它们实际上只是被“废弃”但仍在浏览器内部显示? li>
  2. 在后一种情况下,浏览器对事件的内部管理是否还会随着时间的推移而受到影响?
  3. 在后一种情况下,我是否可以做一个简单的更改(例如将容器的innerHTML设置为null),以实现“自动垃圾收集”的希望?
  4. 如果此过程的持续时间很重要,请让我指出这将是短暂的。由于上述内容是导航面板的一部分,因此其目的是允许访问者浏览并选择其他页面。因此,我至少可以假设导航到新页面后浏览器上的任何“不良影响”都会被“消除”。

注意:我意识到,通常认为addEventListener()的使用比内联事件更好,而且在所有添加的处理程序上使用“ removeEventListener()看起来在技术上也更干净。但是问题仍然存在,即是否需要删除,如果包含事件处理程序的所有项目的原始容器被“清除”或设置为“ null”,那么,事件是否会自动从浏览器工作流程中删除

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)