0

当 jQuery 放置在页面底部时,将所有 JavaScript 延迟到 jQuery 加载后的最佳方法是什么?我已经解决了获取所有 jQuery 实例并在 jQuery 加载后启动它们的问题,但是我需要找到一种很好的方法来获取所有使用<script src="file.js"></script>.

<head>

这会抓取页面上找到的所有 jQuery 函数,并将它们推送到一个数组中。

<script>
window.q = [];
window.jQuery = function (f) {q.push(f)};
</script>

之前</body>

就在正文之前,我从 Google API 获取带有本地回退的 jQuery 库,然后运行数组中的每个 jQuery 函数。

<script> window.jQuery || document.write('<script src=\"Scripts/jquery-1.7.1.js\"><\/script>')
// after jQuery loaded
jQuery(function () {
    jQuery.each(q, function (index, f) {
        f.call(document);
    });
});
</script>

对于这个问题...

<script>所以我最初在我的代码中有一堆标签。一种简单的方法是使用 jQuery.ajax() 调用它们并键入“脚本”,如下例所示,但我想探索更好的选择的可能性。

jQuery(function () {
    jQuery.ajax({
        url: "/scripts/somescript.js", // contains myFunction();
        cache: true,
        dataType: "script",
        success: function() {
            myFunction();
        }
    });
});

笔记:

  • 这只适用于并非在每个页面上都使用的不常见脚本。它位于可以由站点管理员打开或关闭的小部件的上下文中,这就是为什么我没有将它与我在母版页 (MVC) 中放在 jQuery 下方的其他常见 JS 结合起来。

  • 我已经使用 html5boilerplate 进行了一些修改来设置它,所以我实际上得到了一个脚本,它是 Modernizr 2.0。

让我知道您对改进的想法和想法!

谢谢!

4

1 回答 1

0

如果我理解你的问题是正确的,

在文档准备好(又名$(document).ready())时执行 javascript 只会减慢页面加载速度,因为浏览器一读取它就会执行 javascript,首先将 jquery 放在首位<link href...>,然后是您想要的所有 javascript 代码,

请注意,如果 javascript 尝试使用其下方的 html,它将无法正常工作(因为文档仍在加载,仍在下载),因此请将其放置在正确的位置

于 2012-02-24T11:43:36.273 回答