这就是我到目前为止所得到的
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()时,它可以工作。我无法让我的脚本调用该函数,我该怎么做?
答案 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()+'()); ');