4
function Foo1() {
    var bar = 'test';
}

私の知る限り、次のような特権関数を作成しない限り、グローバルスコープから変数 bar にアクセスすることは不可能です。

function Foo2() {
    var bar = 'test';
    this.read = function(){return bar;};
}

Greasemonkey (またはその他のツール) は、関数 Foo1 全体を Foo2 で再定義する以外に、変数 bar にアクセスする手段を提供しますか? Greasemonkey には、特定の制限を回避する GM_xmlhttprequest があるため、これも実行していくつかの問題を回避できるかどうか疑問に思っていました。

私が現在やろうとしているのは、関数に埋め込まれたプライベート変数を読み書きすることです。これは、それ自体も別の .js インクルードにあります。したがって、スクリプトを直接変更することはできず、.js を AJAX で読み込んで変更を実行し、元のスクリプトを上書きする必要があります。これは非常に面倒であり、このタスクを実行するためのより簡単な方法が必要です。

4

2 に答える 2

2

GM_xmlhttprequest はブラウザのセキュリティをバイパスするだけです。一方、変数のスコープは、言語と Javascript VM の一部です。Javascript VM を変更する以外に、関数スコープ外の「プライベート」変数にアクセスする方法はありません。

于 2013-06-01T19:49:02.243 に答える