2017-02-14 8 views
2

私は数日間、スクリプトの実行中に変数を変更しようとしています。GreaseMonkey - 実行中に変数を変更する

HTMLページではJavaScriptファイルを呼び出すスクリプトタグを、持っている:

<script type="text/javascript" src="script.js"></script> 

私たちは、JSファイル内でこのようなものを持っている:

/*File's beggining*/ 
val = 1; 
if (val == 1) { window.open('getout.html', '_self');} 
... 
/*File's ending*/ 

私はval年代を変更したいですリダイレクトを避けるために値。 私は数日間探してきました。しかし、私は立ち往生しています。誰かが私にヒントを与えることができれば、それは非常にいいだろう!

ありがとうございます!ページのスクリプトのいずれかを実行して、Object.definePropertyでグローバルオブジェクトwindowの未割り当て可能プロパティとしてvalを宣言する前に、あなたは何ができるか

+0

")"をwindow.open( 'getout.html'、 '_self')から削除します。 –

+0

完了。ありがとうございました。 – Saggi

答えて

1

は、あなたのスクリプトを実行される:

// ==UserScript== 
// ... 
// @run-at document-start 
// ==/UserScript== 

Object.defineProperty(window, 'val', { value: 0 }); 

以降の割り当てグローバル変数にval何の効果もありません。

val = true; 
console.log(val); // => 0 

そして、それはまだ動作し、変数がvarと同じスコープで再宣言されます場合はスローされません。

投稿したコードがグローバルスコープにあると仮定しています。そうでない場合は、スクリプトからその値をオーバーライドする方法はありません。その場合、別の手段を試して、window.open関数を直接オーバーライドします。

+1

それは働いた!ありがとうございました ! :) – Saggi

関連する問題