从javascript运行网站功能

时间:2012-07-12 13:05:15

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

这就是我到目前为止所得到的

function onReady(callback) {
    if (document.readyState === "complete") window.setTimeout(callback, 0);
    else window.addEventListener("load", callback, false);
}
onReady(function() {
    removeit("new");
});

function removeit() {
    el = document.querySelector("#toolbarCurtain");
    if (el) {
        el.style.setProperty("display", "", null);
    } * * EXEC COMMAND
    return;
}

“** EXEC COMMAND”是我想要调用网站本身的功能的地方。该函数被称为drawPlayer(),当我在chrome控制台中键入drawPlayer()时,它可以工作。我无法让我的脚本调用该函数,我该怎么做?

1 个答案:

答案 0 :(得分:0)

取自here

所有注入的代码都在一个孤立的世界中运行,这个javascript上下文与主网站的JS上下文隔离开来。这是内置的安全措施,无法禁用。

解决方案是附加脚本。如果您需要大量执行,通常应该设置自定义通信事件,并且只注入一个脚本来侦听该自定义事件并eval()事件数据。 Here is how Google recommends to do this.

请记住,只有当目标站点没有CSP(Content-Security-Policy)时,这才有效。

var RunInThisContext = function(c){ 
    var code = document.createTextNode(c);
    var script = document.createElement('script');
    script.type='text/javascript';
    script.appendChild(code);
    document.body.appendChild(script);      
}; 

像这样使用:

RunInThisContext('('+(function(){ 
     /////////////////////
     //
     //   RUN YOUR FUNCTIONS HERE
     //
     /////////////////////
}).toString()+'()); ');