如果内联javascript代码将在文档加载事件之前执行?

时间:2012-01-20 21:01:28

标签: javascript javascript-events

我有一个<form>标记的页面。在form内部,<form>标记的变体末端有很多html和一些内联javascript。
我听文件加载事件。我可以100%确定,当文件加载被触发时,所有这些内联javascript代码都已经执行了吗? 标记示例:

<body>
  <form>
    --html controls---
    <script type="text/javascript">
      --some code to run here--
    </script>
  </form>
</body> 

我的回答是肯定的,内联javascript将在文档加载之前执行,但我想找到证据 感谢。

修改

live demo
仅当加载了所有html控件并且加载和解释了javascript(内联或带有src属性)时才会触发文档加载。我对此声明是否正确?

3 个答案:

答案 0 :(得分:4)

除非您在domready回调函数中放置要执行的代码,否则当您加载页面时(在domready之前),您的内联javascript代码将立即执行。

答案 1 :(得分:1)

一旦脚本标记完成解析,内联脚本将立即执行,因此您将无法访问文档的其余部分。另一方面,它允许您在文档中的该点编写其他HTML。

请注意,Firefox 3.5有一个错误,您可以在内联脚本中设置defer属性,它不会立即执行。这种非标准行为在Firefox 3.6中得到修复。

答案 2 :(得分:0)

我认为你没有保证 如果它是一个缓慢的javascript(emscripten),我认为在onload触发时代码仍然可能被执行。

但我找不到明确的文件: https://developer.mozilla.org/en/DOM/window.onload http://msdn.microsoft.com/en-us/library/ie/cc197055%28v=vs.85%29.aspx

http://www.w3.org/TR/html4/html40.txt

  

onload = script [CT]             用户代理完成加载时发生onload事件             窗口或FRAMESET中的所有帧。这个属性可能是             与BODY和FRAMESET元素一起使用。

所以我找不到保证,你可以测试(有重量的东西,例如来自这里的演示https://github.com/kripken/emscripten/wiki),hpe为最好的,或者在你的on的保存中建立你的内联天气脚本完成