GreaseMonkey - 在执行期间修改变量

时间:2017-02-14 09:48:07

标签: javascript 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的值以避免重定向。 我已经搜索了几天;但是我被困住了。如果有人能给我一个提示,那就太好了!

感谢您阅读!

1 个答案:

答案 0 :(得分:1)

您可以执行的操作是在任何页面脚本运行之前运行脚本,并将val声明为全局对象window的不可分配属性{{3} }:

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

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

对全局变量val的后续分配将不起作用。

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

如果变量在var的同一范围内重新声明,它仍然有效并且不会抛出。

假设您发布的代码属于全局范围。如果它不是,那么就无法从脚本中覆盖该值。在这种情况下,我会尝试另一个途径并直接覆盖window.open函数。