【问题标题】:GreaseMonkey - Modify variable during executionGreaseMonkey - 在执行期间修改变量
【发布时间】:2017-02-14 09:48:07
【问题描述】:

我这几天一直在尝试在脚本执行期间修改变量。

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

感谢您的阅读!

【问题讨论】:

  • 从 window.open('getout.html', '_self') 中删除一个“)”;

标签: javascript greasemonkey


【解决方案1】:

您可以做的是在任何页面脚本运行之前运行您的脚本,并将val 声明为具有Object.defineProperty 的全局对象window 的不可分配属性:

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

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

对全局变量val 的后续赋值将无效。

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多