2015-10-18 94 views
1

我有以下JS代碼,它檢查網頁以查看是否以固定間隔在其上發佈新密鑰。現在的問題是:在函數內部調用函數時的不同結果

  • start()直接從開發控制檯(F12)呼籲,結果是正確的,當我的功能$(document).ready調用它的結果是錯誤的,是的,我已經證實,沒有100次網頁上的內容正在改變。

  • 我只是好奇,看看是否瓦爾是不同步的,所以我在$(document).ready稱爲start() 2次了,還是錯的結果,但是,當我打電話從F12 satrt()(從$(document).ready調用它20次後,我得到正確的結果。

  • 我已經確認所有事件都在等待對方finsih(也許叫synchronous)及其不正確的,任何單一的語句在不同的線程運行。

釷如果它可能如果F12稱它,那麼它的正確,如果$(document).ready稱它是錯誤的。

一個intresting一點要注意:

當我在我的代碼並沒有$(document).ready,我叫wow()start()這也給了我錯誤的結果,但F12給人正確的。 現在,我有$(document).ready,如果我從它調用start()哪些inturn調用wow()給我錯誤的結果,但現在如果我從我的控制檯調用start(),它給了我正確的結果!

我acually想簡單的形式做:按頁

  1. 等待完成加載
  2. 電話wow()
  3. 等待wow()完成
  4. 刷新頁面

相同的過程在無限循環中繼續。

謙虛感謝任何幫助,這已經讓我的時間差不多5-6小時!

JS代碼:http://pastebin.com/9UJYdepU

編輯:

正確的輸出:

a.js:136 Started 
a.js:33 Called Wow 
a.js:83 ---------------------KEY 7.0---------------- 
a.js:83 ---------------------KEY 7.1---------------- 
a.js:83 ---------------------KEY 7.2---------------- 
a.js:102 LAST used keys : Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z 
a.js:140 WOWO DONW 

錯誤輸出:

Started 
a.js:33 Called Wow 
a.js:102 LAST used keys : Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z 
a.js:140 WOWO DONW 

document.getElementsByTagName("p");給出:http://pastebin.com/JXQ9483N localStorage.getItem("usedp")給出Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z

回答

0

最後我解決了它!這一切都是因爲邪惡Jquery(對不起,如果我傷害了你)。

$(文件)。就緒被觸發,當頁面開始加載不是當它已經finsihed加載,我的另一種解決方案是:

var myVar = setInterval(function(){ chk() }, 500); 
function chk(){ 

if(document.readyState=="complete"){ 
     clearInterval(myVar); 

    startt(); 


} 
}