2012-07-21 22 views
0

我爲調整圖像大小的論壇製作了腳本。它的效果很好,除了發佈或編輯重定向之後,其中onreadystatechange未在Google Chrome中觸發。Onreadystatechange在Chrome中的標題重定向後無法正常工作

當查看一個線程,EG SomeSite/forums.php?行動= viewtopic & topicid = 205362,在userscript作品。

編輯/發佈後,EG SomeSite/forums.php?行動= viewtopic & topicid = 205362 &頁= p4976670#4976670,在userscript不起作用。

問題在於這樣的代碼:

document.onreadystatechange = function() { 
if (document.readyState == "complete") { 
    //Call function 
}}; 

我等待所有的資源加載,因爲調整大小是與許多圖像的網頁,否則不一致。

該腳本在Firefox中與Greasemonkey完美配合。

任何想法爲什麼onreadystatechange在重定向後不會在Chrome上觸發?有沒有更好的方法來等待資源被加載?

+0

在這種情況下,我們需要看到*整個腳本*,尤其是元數據塊。鏈接到實際的目標頁面或其代碼的快照可能也是必要的。 – 2012-07-22 00:56:02

回答

0

您沒有說明您是使用@run-at參數,而是使用by default, Chrome userscripts are somewhat erratic about when they fire
這意味着有時候腳本會在onload事件之前觸發,有時會在(默認情況下)之後觸發。如果是在onload事件之後,那麼onreadystatechange將不會觸發。

爲適應此問題,或者添加// @run-at document-endthe metadata block,或者與取代的代碼片斷:

window.addEventListener ("load", YourMainFunction, false); 
if (document.readyState == "complete") { 
    YourMainFunction(); 
} 

function YourMainFunction { 
    // DO ALL YOUR STUFF HERE... 
} 


在後一種情況下,YourMainFunction()要麼等待加載事件(同readyState == "complete")或者如果事件已經過去,則立即開火。在任何情況下,YourMainFunction()只能運行一次。

相關問題