如何通过Chrome扩展程序调用网站的功能?

时间:2013-04-29 21:13:59

标签: javascript google-chrome google-chrome-extension

我正在尝试为自己制作Chrome扩展程序,以便当我在Twitch.tv访问任何类型的频道时,聊天会自动隐藏。

我一直在用Firebug看它,我找到了toggle_chat()。如果我在控制台中输入该内容,聊天将不再可见。

在我的用户文件中,我写了

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

但它说

  

未加载的ReferenceError:当我加载Twitch频道时,未在控制台中定义toggle_chat。

任何想法如何使这项工作?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

我知道这非常hacky,但是它完成了工作,有时候正是你所需要的。 :)它将检查函数大致半秒,直到它存在。当它终于出现时,它会调用该函数然后清除计时器。

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

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

    id = setInterval(check, 500);
}