0

メソッドが実行される前に、変数をページに挿入しようとしています。状況は以下の通り

CUSTOM JS CAN GO HERE

my.var = 'cake';
my.function();

ページを直接変更するアクセス権はありませんが、必要に応じて JS を追加できるページの上部にコンテンツ領域があります。基本的に、 my.function() が実行される前に、 my.var 変数を別のもので上書きする必要があります。これを行う方法はありますか?(サイトは jQuery 1.4.2 を実行しています。

ありがとうダン

4

1 に答える 1

3

基本的に、 my.function() が実行される前に、 my.var 変数を別のもので上書きする必要があります。これを行う方法はありますか?

var oldfunction = my.function;
my.function = function () {
    my.var = "whatever you want";
    oldfunction.apply(this, arguments);
}

もちろん、これは(そのままで)への呼び出しの直前に変更できないコードによって上書きされるmyか、上書きされない場合です。my.functionmy.functionmy.var

たとえば、次のシナリオでは:

///your code goes here

///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();

あなたが望むことは不可能です(something同じ方法で再定義することができない限り)。

基本的に、この場合、あなたができる唯一のことは書くことです(と仮定しましょsomethingfunction () { alert(my.var) }

var oldalert = window.alert;
window.alert = function (message) {
    oldalert(message === 'cake' ? 'whatever you want' : message);
}

さて、あなたはアイデアを持っています。

my.var = 'cake';と の間に何らかのコードを挿入するmy.function();ことは、反対側からは不可能です。大まかに言えば、コードを の前に実行するmy.var = 'cake';か、後に実行するかという 2 つのオプションから選択できますmy.function();。後でコードを実行するmy.var = 'cake';ことは不可能です (本番環境について話している場合、デバッグ目的でmy.function();変更する必要がある場合は、デバッガーを使用して手動で何でも行うことができます)。my.var

于 2012-06-29T05:19:58.443 に答える