6

ユーザースクリプトを使用してJavaScriptゲームを変更しようとしています。

問題は、すべてのゲーム コードがこのような無名関数でラップされていることです。

(function () { "use strict";
    var js = 'test';
})();

ユーザースクリプトで JS 変数にアクセスできますか?

編集 :

参照 :この JavaScript を Greasemonkey で変更するには?

この質問は、関数のクロージャーにアクセスすることは可能ですか? と同じではありません。!

4

2 に答える 2

2

はい! 適切なブラウザ (Firefox) を使用すれば可能です

ユーザースクリプト (Firefox の場合) では、ページの JS を書き直して自分自身にアクセス権を与えることができます。「この JavaScript を Greasemonkey で変更する方法は?」も参照してください。.

関数呼び出しは次のようになります (インライン スクリプトの場合):

checkForBadJavascripts ( [
    [false, /js = 'test'/, replaceTargetJavascript]
] );


function replaceTargetJavascript (scriptNode) {
    var scriptSrc   = scriptNode.textContent;
    scriptSrc       = scriptSrc.replace (
        /js = 'test';/,
        "js = 'test'; window.myJS = js;"
    );

    addJS_Node (scriptSrc);
}

次に、次のように変数にアクセスします。

console.log ("The var is: ", unsafeWindow.myJS);

残念ながら、 Chromeのユーザー スクリプトや Tampermonkey スクリプト でこのようなことを行う良い方法はまだありません。

問題のJSを含むスクリプトが外部である場合、Chromeではそれbeforeloadをブロックするために使用できます。次に、代わりに独自のコードを挿入します-そのプライベート変数を公開するように変更します。

于 2013-11-14T22:50:00.620 に答える
1

いいえ、プライベート スコープにある変数にはアクセスできません。

于 2013-11-14T18:24:46.003 に答える