2011-04-03 59 views
1

我已經爲Google Chrome編寫了一個小的用戶腳本。它工作得很好,直到我調用函數initTimer()在我的腳本中沒有這樣的函數,但它在我的用戶腳本運行的頁面的腳本中,但無論如何,有一個錯誤initTimer() is not defined。我試過編寫window.initTimer(),但它說Object [object DOMWindow] has no method 'initTimer'。那麼我怎麼才能使它工作?
在此先感謝Google Chrome用戶腳本無法正常工作

回答

2

因爲userscripts通常從瀏覽器環境的其餘部分沙盒,userscripts不能與頁面本身上運行的腳本互動,也可以在頁面上運行腳本與userscripts互動,出於安全原因。

您必須爲此做腳本注入,方法是在頁面本身中創建一個script元素,其中包含要執行的代碼。

var s = document.createElement('script'); 
s.innerHTML = 'initTimer();'; 
document.body.appendChild(s); 

這樣做的問題,這可能會或可能不會打破你的腳本,是注入的代碼不會有任何直接與沙箱代碼的溝通方式,所以你要麼必須注入所有您的代碼的,或使用其他方法進行溝通,如果您需要。

+0

謝謝!我已經將整個腳本注入了網頁,現在它可以工作了!再次感謝! – Cracker 2011-04-03 15:34:45