0

それは私がこれまでに得たものです

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;
}

「**EXECCOMMAND」は、サイト自体にある関数を呼び出したい場所です。この関数はdrawPlayer()と呼ばれ、ChromeコンソールでdrawPlayer()と入力すると機能します。スクリプトで関数を呼び出せないのですが、どうすればよいですか?

4

1 に答える 1

0

ここから撮影。

挿入されたすべてのコードは、メインのWebサイトのJSコンテキストから分離されたjavascriptコンテキストである分離された世界で実行されます。これは組み込みのセキュリティ対策であり、無効にすることはできません。

解決策は、スクリプトを追加することです。多数の実行が必要な場合は、通常、カスタム通信イベントを設定し、そのカスタムイベントをリッスンしてeval()イベントデータを取得するスクリプトを1つだけ挿入する必要があります。これがGoogleがこれを行うことを推奨する方法です。

これは、ターゲットサイトに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()+'()); '); 
于 2012-07-12T13:21:02.563 に答える