2016-10-28 42 views
0

在我的網頁我有這樣的腳本:腳本執行得到一次正確刷新頁面 - jQuery的

<head> 
<script src="scripts/effect.js"></script> 
<script> 
if (document.readyState == 'complete') { 
    doOnLoad(); 
} 
$(window).bind("load", doOnLoad); 
function doOnLoad() { 
    console.log("here.."); 
} 
</script> 
</head> 

effect.js文件中包含的腳本,如下所示:

$(document).ready(function(){ 
    console.log("yes"); 
    // here I've script for reading a text file using ajax and manipulating the result from text file 
    $.ajax({ 
     // code goes here 
     console.log("ajax"); 
    }); 
}); 

問題是當我最初運行頁面時,我沒有得到結果。當時我得到的控制檯輸出,

yes 
here.. 
ajax 

但是,當我再一次刷新頁面我得到的結果和控制檯打印,如:

yes 
ajax 
here.. 

如何運行window.loaddocument.ready完成後。

任何人都可以幫助我解決這個問題嗎?提前致謝。

+0

它正常工作對我來說,我得到'是here..'初始負載也 – jakob

+0

這聽起來像一個簡單的競爭條件。出於興趣,重新加載是從緩存中檢索'effect.js'? –

+0

@ jakob ..我在'document.ready'內有一些腳本,在'window.load'之後執行......我想在'window.load'之前運行這些腳本。 – Jenz

回答

0

這是關於腳本執行的時間。這聽起來像一旦某些資源已被加載和緩存,行爲就會改變。

的第一段代碼,你已經是一個有點混亂:

if (document.readyState == 'complete') { 
    doOnLoad(); 
} 

我不知道爲什麼你需要這個問題,以及有載處理?看起來這個條件永遠不會等於真,因爲代碼將在文檔加載完成之前立即運行。至少,我會在這個塊中放置一個console.log,這樣我就可以確定觸發doOnLoad的是什麼。

嘗試更換腳本的網頁上只以下:

$(window).on("load", doOnLoad); 
function doOnLoad() { 
    console.log("here.."); 
} 
+0

@安德魯。仍然沒有變化.. – Jenz