在删除之前将注入JS代码完成

时间:2016-03-30 11:07:27

标签: javascript html

是否保证此代码

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函数将其从页面中删除吗?

或者可以在执行此代码之前删除它吗?

1 个答案:

答案 0 :(得分:3)

是的,根据HTML5,代码将在删除script元素之前运行。

当您将其插入文档时,它会立即prepared

  

script元素未标记为时   "parser-inserted"遇到了一个列出的事件   在以下列表中,用户代理必须同步prepare   script元素:

     

src算法的第15步,由于script没有"parser inserted"属性且未被标记为execute the script block,因此您的案例将是最后一个:

  

否则:即使其他脚本已在执行,用户代理也必须立即https://github.com/morelinq/MoreLINQ

但是,当然,如果该脚本具有setTimeout之类的异步代码,则会推迟。