【问题标题】:how to priority dom execution in javascript如何在javascript中优先执行dom
【发布时间】:2011-11-25 18:42:19
【问题描述】:

当我想在 html 标记中 document.getElementById(); 时遇到问题。 示例 =

<html>
<head>
<script type="js"> //note this example is not found so browser is take time to execution
<script type="js"> //note this example is not found so browser is take time to execution
<script type="js"> //note this example is not found so browser is take time to execution
<script type="js"> //note this example is not found so browser is take time to execution
</head>
<body>
<div> ...
<div id="test">
</div>
</body>
</html>

我的问题是如何执行document.getElementById("test"); 而不等待未找到加载脚本?这可以节省更多时间。我该如何解决这个问题。感谢您的回答。

注意:解决不要删除或修改脚本到找到的目录。 以防万一,如果找不到脚本。

【问题讨论】:

    标签: javascript html dom


    【解决方案1】:

    defer="defer" 添加到您要推迟执行的&lt;script /&gt; 标记中。

    注意:defer 适用于 IE 和更新版本的 Firefox 和 Chrome

    【讨论】:

    • 任何其他建议,因为我的浏览器也找不到执行脚本。我只想优先document.getElementById("test"); 是第一次执行。我可以得到innerHTML。
    • 在页面底部加载 JS 文件总是更好。看看为什么最好在最后加载:stackoverflow.com/questions/1638670/…。请注意,没有&lt;srctype /&gt;,应该是&lt;script type="text/javascript" src="path/to/your/js/file"&gt;&lt;/script&gt;
    【解决方案2】:

    尝试使用headJS,它将在document.ready 之后异步加载您的脚本。

    另一种选择是将srctype 移动到文件的底部,以便最后加载它们。但我不认为document.ready 会在浏览器加载这些文件之前执行

    【讨论】:

      【解决方案3】:

      假设&lt;srctype&gt; 应该是&lt;script&gt;,并且您要问的是您可以对页面中引用的不存在的脚本做什么,唯一可能的答案是您切换到动态像LABjs 这样的脚本加载方法,或者,当然,停止包含引用不存在脚本的脚本标签。

      浏览器将始终尝试加载和运行未标记为“异步”的&lt;script&gt; 标签,这当然是一个相当新的属性,即使在那些支持它的浏览器中其行为也不是很统一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-11
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 2019-05-10
        相关资源
        最近更新 更多