2014-05-20 39 views
0

我有一個圖像滾動器阻止資源加載,直到它已經加載。 我試過推遲腳本,但它並不想延遲工作。 在網頁的其他部分之後,最簡單的方法是什麼? 伊夫看了一些jQuery方法,但它像閱讀中國給我在頁面的其餘部分之後加載腳本而不推遲?

+2

'它像閱讀中國人me'。那麼,開始學習語言的時候了。 –

+0

'$(document).ready(function(){... // stuff stuff here});'也許? – sideroxylon

+0

嘗試使用$ .getScript();功能。在DOM準備好的時候調用它,並且它的成功回調嘗試調用你需要的圖像滾動函數。嘗試使用這些鏈接http://api.jquery.com/jquery.getscript/和http://www.w3schools.com/jquery/ajax_getscript.asp – SSS

回答

3

這裏有一些不同的選擇:

  1. 放置<script>標籤</body>標籤之前。這將允許在腳本甚至開始加載之前加載DOM的其餘部分。

  2. 建設一些代碼,以動態加載腳本和不運行的代碼,直到$(document).ready()火災,這取決於你要多少資源等待開始你的腳本之前甚至$(window).load()火災。您可以使用$.getScript()動態加載jQuery中的腳本,或者只是動態地插入腳本標籤也很簡單。

  3. 排除代碼故障以找出defer屬性不起作用的原因,因爲它專爲像您希望其他事物首先加載的情形而設計。我猜這是因爲您爲庫添加了defer加載,但並未延遲嘗試使用該庫的代碼,因此當您推遲加載庫時代碼不起作用。

在腳本加載一些參考:

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添加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> 

這些都具有AFTER滾動庫被加載運行。所以,如果你延遲加載滾動庫,那麼這個代碼必須在加載庫之後運行。

如果您正在將滾動庫移動到</body>之前,請將這些代碼塊放在它後面(不使用任何defer標記)。

+0

如果我把它放在文檔的末尾,我只是插入它像這樣 Techagesite

+1

@Techagesite - 是的,你會將它移動到''部分的結尾,但是您還必須將使用該庫的DYN_WEB代碼移到插入此腳本標記後的任何位置(請參閱添加到我的答案結尾的內容)。 – jfriend00

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> 
+0

我在哪裏放置該代碼? – Techagesite

+0

你可以將它添加到你的頁面正文後面,HTML – sideroxylon

+0

好的是那個代碼javascript? – Techagesite

相關問題