[英]Different Result when function is called inside a function
我有以下JS代碼,用於檢查網頁,以查看是否有規律地在其上發布新的密鑰。 現在的問題是:
當直接從Dev Console(F12)調用start()
,結果正確,而我的函數$(document).ready
調用時結果錯誤,是的,我有100次確認頁面上的內容均未更改。
我只是很好奇,看看var是否不同步,所以我在$(document).ready
兩次調用了start()
,結果仍然是錯誤的,但是當我從F12調用satrt()
時(調用它20后)從$(document).ready
,我得到了正確的結果。
我已經確認所有事件都在等待對方finsih(也許叫synchronous
)和它的不正確的,任何單一的語句在不同的線程運行。
然后,如果F12
調用它,然后調用它的Correct,如果$(document).ready
調用它,那么它怎么可能出錯。
當我的代碼中沒有$(document).ready
,我從start()
調用了wow()
,這也給了我錯誤的結果,但是F12給出了Correct。 現在我有了$(document).ready
,如果我從中調用start()
,這又反過來調用wow()
會給我錯誤的結果,但是現在如果我從控制台中調用start()
,它會給我正確的結果!
我想以簡單的形式執行的操作:
wow()
wow()
完成 同一過程無限循環地繼續。
感謝您的幫助,這已經浪費了我大約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 : 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
終於我解決了! 這全都是邪惡的Jquery的原因(對不起,如果我傷害了您)。
$(document).ready是在頁面開始加載而不是完成加載時觸發的,我的替代解決方案是:
var myVar = setInterval(function(){ chk() }, 500);
function chk(){
if(document.readyState=="complete"){
clearInterval(myVar);
startt();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.