2017-02-14 11 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 «S чтобы избежать перенаправления. Я искал несколько дней; но я застрял. Если кто-то может дать мне подсказку, было бы очень приятно!

Благодарим за понимание!

+0

удалить ")" из окна.open ('getout.html', '_self'); –

+0

Готово. Спасибо. – Saggi

ответ

1

Что вы можете сделать, это запустить сценарий, прежде чем любой из сценариев + страницы запуска, и объявить val как не-назначаемой свойство глобального объекта window с Object.defineProperty:

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

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

Последующие задания к глобальной переменной val не будет иметь никаких эффектов.

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

И он все еще работает и не бросает, если переменная получает в повторно объявлен той же области с var.

Это предполагается, что код, который вы опубликовали, находится в глобальном масштабе. Если это не так, тогда нет способа переопределить это значение из вашего скрипта. В этом случае я попробую еще один проспект и напрямую переопределить функцию window.open.

+1

Это сработало! Спасибо ! :) – Saggi