2013-04-29 74 views
1

我試圖爲自己製作一個Chrome擴展程序,這樣當我訪問任何頻道Twitch.tv時,該聊天會自動隱藏。如何從Chrome擴展中調用網站的功能?

我一直在看着它與螢火蟲,我發現toggle_chat()。如果我在控制檯中鍵入該聊天,則聊天不再可見。

在我userscript文件,我已經寫了

window.onload = function() { 
toggle_chat(); 
} 

但它說

Uncaught ReferenceError: toggle_chat is not defined" in the console when I load a Twitch channel.

任何想法如何使這項工作?

+2

很可能你太早打電話了。祝你好運,找出何時調用該方法。 – 2013-04-29 21:15:40

+0

我同意上面我會多玩一下控制檯,看看你能做些什麼 – Nomad101 2013-04-29 21:16:09

+0

我試着讓它在執行前等待10秒鐘,但那也沒有奏效 – Shiq 2013-04-29 21:21:48

回答

1

我知道這很不方便,但它可以完成工作,有時也正是你需要的。 :)它會檢查該功能大約半秒鐘,直到它存在。當它終於到來時,它會調用該函數,然後清除計時器。

window.onload = function() { 
    var id = null; 

    var check = function() { 
     if (typeof toggle_chat === "function") { 
      toggle_chat(); 
      clearInterval(id); 
     } 
    } 

    id = setInterval(check, 500); 
} 
+0

這也算得很好。謝謝大家的幫助! – Shiq 2013-04-29 22:30:46

3

這與時間無關。 Chrome擴展程序和內容腳本在isolated world中執行,這意味着它們無法訪問包含函數的頁面的JavaScript。您可以這樣做,以便您的content script附加一個<script>元素,然後調用所需的頁面函數,但只需模擬#right_close元素上的點擊將更加容易。你可以用這樣的純Javascript來做到這一點:

window.onload = function(){ 
    var evObj = document.createEvent('Events'); 
    evObj.initEvent('click', true, false); 
    document.querySelector('#right_close').dispatchEvent(evObj); 
} 
+0

完美運作!非常感謝您的幫助! – Shiq 2013-04-29 22:14:34