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

Fro*_*art 5 html javascript

是否保证此代码

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');");
Run Code Online (Sandbox Code Playgroud)

将等待传递给的代码runEmbeddedJSInPageEnvironment先完成,然后通过调用removeChild函数将其从页面中删除?

或者可以在此代码执行完毕之前将其删除?

Ori*_*iol 4

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

当您将其插入文档时,它会立即准备好

script未标记为 “解析器插入”的元素遇到以下列表中列出的事件之一时,用户代理必须同步准备script元素:

准备脚本算法的第 15 步,由于script没有src属性并且没有被标记为“插入解析器”,因此您的情况将是最后一个:

否则:用户代理必须立即执行脚本块,即使其他脚本已经在执行。

但当然,如果该脚本具有像 之类的异步代码setTimeout,那么这将被推迟。