【发布时间】:2015-07-05 11:45:32
【问题描述】:
我有一个带有 iframe 的 html 页面,并想使用 src 属性切换内容。 iframe 内容可能包含 JQuery 和 Angular。如果我更改了 src 属性,是否在加载新的 iframe 内容之前清除了 iframe 中的 DOM 事件(JQuery 和 Angular 资源)?
【问题讨论】:
标签: jquery angularjs html iframe
我有一个带有 iframe 的 html 页面,并想使用 src 属性切换内容。 iframe 内容可能包含 JQuery 和 Angular。如果我更改了 src 属性,是否在加载新的 iframe 内容之前清除了 iframe 中的 DOM 事件(JQuery 和 Angular 资源)?
【问题讨论】:
标签: jquery angularjs html iframe
是的。 iframe 窗口的整个环境被擦除并替换为新页面的新环境。这包括 JavaScript 环境和其中的所有内容——全局变量、声明的函数、加载的脚本等——以及完整的 DOM 结构,以及任何事件处理程序。
【讨论】:
如果您所说的“DOM 事件”是指 DOM 事件处理程序,那么是的,它们已被清除。
DOM 事件处理程序附加到特定的 DOM 元素。当这些 DOM 元素被替换时,所有的事件处理程序也将消失。而且,设置 iframe 的 .src 将替换 iframe 中的所有 DOM 元素,因此所有先前的事件处理程序也将消失。
事实上,替换 iframe 的 .src 本质上是加载一个全新的页面,因此整个 Javascript 上下文被替换并重新构建。前一页中的任何内容都没有保留。
【讨论】:
是的,这些事件会被清除,因为当您更改 iframe 的 src 时,Iframe 会加载该 URL 内容并创建一个新的 window/document,它最初没有绑定事件。基本上它就像新鲜的 DOM。
【讨论】: