在没有推迟的情况下在页面的其余部分之后加载脚本?

时间:2014-05-20 06:50:47

标签: javascript

我有一个图像滚动条阻止资源加载,直到加载完毕。 我已经尝试推迟脚本但它不想在延迟时工作。 在页面的其余部分之后加载它的最简单方法是什么? 我看了一些jquery方法,但它就像给我读中文

2 个答案:

答案 0 :(得分:3)

以下是一些不同的选择:

  1. <script>标记放在</body>标记之前。这将允许在脚本开始加载之前加载其余的DOM。

  2. 构建一些代码以动态加载脚本并且不运行该代码,直到$(document).ready()触发或甚至$(window).load()触发,具体取决于您要等待多少资源在开始你的脚本之前。您可以使用$.getScript()在jQuery中动态加载脚本,或者只是动态插入脚本标记也很简单。

  3. 对代码进行问题排查,找出defer属性无法正常工作的原因,因为它专为像您这样的情况而设计,您希望首先加载其他内容。我的猜测是因为您为库添加了defer加载,但没有延迟您尝试使用库的代码,因此当您延迟加载库时代码不起作用

  4. 有关脚本加载的一些参考:

    load and execute order of scripts

    Script Tag - async & defer

    improving website performance by dynamically loading javascript?

    pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it


    在查看您的实际页面代码时,在向其添加defer时脚本无法正常工作的原因是您拥有的代码依赖于无法运行的脚本直到加载动态滚动代码之后。在查看代码时,我看到了这段代码和另一个类似于它的块:

            <script type="text/javascript">
    
    if ( DYN_WEB.Scroll_Div.isSupported() ) {
    
        DYN_WEB.Event.domReady( function() {
    
            // arguments: id of scroll area div, id of content div
            var wndo = new DYN_WEB.Scroll_Div('wn', 'lyr1');
            // see info online at http://www.dyn-web.com/code/scrollers/continuous/documentation.php
            wndo.makeSmoothAuto( {axis:'h', bRepeat:true, repeatId:'rpt1', speed:100, bPauseResume:true} );
    
            var wndo2 = new DYN_WEB.Scroll_Div('wn2', 'lyr2');
            wndo2.makeSmoothAuto( {axis:'h', bRepeat:true, repeatId:'rpt2', speed:60, bPauseResume:true} );
    
        });
    }
    
            </script>
    

    这两个都必须在加载滚动库之后运行。因此,如果您延迟加载滚动库,则必须在加载库后运行此代码。

    如果您在</body>之前将滚动库移动到右侧,则将这些代码块放在其后面(不使用任何延迟标记)。

答案 1 :(得分:0)

试试这个:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(window).bind("load", function() {
   // code here
});
</script>

或者这个:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(window).bind("load", function() {
   if ( DYN_WEB.Scroll_Div.isSupported() ) {

DYN_WEB.Event.domReady( function() {

    // arguments: id of scroll area div, id of content div
    var wndo = new DYN_WEB.Scroll_Div('wn', 'lyr1');
    // see info online at http://www.dyn-web.com/code/scrollers/continuous/documentation.php
    wndo.makeSmoothAuto( {axis:'h', bRepeat:true, repeatId:'rpt1', speed:100, bPauseResume:true} );

    var wndo2 = new DYN_WEB.Scroll_Div('wn2', 'lyr2');
    wndo2.makeSmoothAuto( {axis:'h', bRepeat:true, repeatId:'rpt2', speed:60, bPauseResume:true} );

});
}
});
</script>