是否保证此代码
function runEmbeddedJSInPageEnvironment(code) {
var e = document.createElement('script');
e.type = 'text/javascript';
e.appendChild(document.createTextNode(code));
(document.head || document.documentElement).appendChild(e);
e.parentNode.removeChild(e);
}
runEmbeddedJSInPageEnvironment("$('#someform').off('submit');");
会等待传递给runEmbeddedJSInPageEnvironment
的代码先完成,然后再通过调用removeChild
函数将其从页面中删除吗?
或者可以在执行此代码之前删除它吗?
答案 0 :(得分:3)
是的,根据HTML5,代码将在删除script
元素之前运行。
当您将其插入文档时,它会立即prepared:
当
script
元素未标记为时 "parser-inserted"遇到了一个列出的事件 在以下列表中,用户代理必须同步preparescript
元素:
script
元素在inserted into a document之后根据DOM获得node is inserted之后 其他script
元素同时插入 早期Document
tree order中的prepare a script。
在src
算法的第15步,由于script
没有"parser inserted"属性且未被标记为execute the script
block,因此您的案例将是最后一个:
否则:即使其他脚本已在执行,用户代理也必须立即https://github.com/morelinq/MoreLINQ。
但是,当然,如果该脚本具有setTimeout
之类的异步代码,则会推迟。