【问题标题】:javascript Document ready firefox (jQuery)javascript 文档就绪 firefox (jQuery)
【发布时间】:2011-11-18 00:39:27
【问题描述】:

在 FireFox 中,我在正文的末尾有这个 jQuery:

$(document).ready(function() {
     $.getScript('LiveMapsJavascriptProvider.aspx?type=reference&value=6', init);
});

head 中有很多 js 文件需要全部加载才能正常工作。所以我把我的电话放在一个 document.ready 事件中。它不起作用。 IE 运行良好。

如果我发出警报('');在我调用 $.getScript 之前它可以工作。

脚本尚未加载似乎有问题?

我认为 Document.ready 是在所有脚本加载完毕并准备就绪后触发的。

谢谢, 伊恩

【问题讨论】:

  • 使用 Firebug 中的“网络”选项卡查看是否加载了 aspx 文件。

标签: jquery firefox document ready


【解决方案1】:

document.ready 在 DOM 加载后触发。你可以试试这个:

$(window).load(function() {
    // will execute once all scripts and images are finished loading
});

【讨论】:

    【解决方案2】:

    您不一定需要为此使用 jQuery。

    只需要一个onload函数如下:

    <body onload="JavascriptFunctionName">
    

    或者您可以将您的函数调用动态附加到 onload 事件,如下所示:

    function addEvent(obj, evType, fn){ 
     if (obj.addEventListener){ 
       obj.addEventListener(evType, fn, false); 
       return true; 
     } else if (obj.attachEvent){ 
       var r = obj.attachEvent("on"+evType, fn); 
       return r; 
     } else { 
       return false; 
     } 
    }
    addEvent(window, 'load', JavascriptFunctionName);
    

    您可以在 JavascriptFunctionName 函数中嵌入 jQuery 函数调用。

    编辑

    jQuery 也可以通过以下代码做到这一点。为了避免不必要的冗余代码,我建议先尝试一下。

    $(window).load(function() {
        JavascriptFunctionName();
    });
    

    【讨论】:

    • 因为这是我可以提供的帮助 OP。如果您在 addEvent 函数的实现中发现任何错误,请告诉我。 Upvotes/Downvotes 应该与答案的帮助程度有关,我相信它是。您可以继续发布更好的答案。
    • OP 显然已经在为$.getScript 使用 jQuery。当 jQuery 将这一切都用$(window).load(init) 包裹起来时,为什么你会建议推出另一个半生不熟的addEvent 实现?绑定事件只是 x-browser-event-ugly-iceberg 的一角:*.com/questions/1796141/…
    • 它不是半生不熟的,它工作得很好,这就是它获得价值的地方。尽管如此,我理解不必要的冗余代码的概念,所以我修改了我的答案。谢谢。
    【解决方案3】:

    您可以尝试使用 head.js 之类的东西来指定执行顺序,同时仍然利用并行加载。

    【讨论】:

      最近更新 更多