javascript - GreaseMonkey - 在执行期间修改变量

标签 javascript greasemonkey

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

HTML 页面有一个 script 标签,它调用一个 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 的值以避免重定向。 我已经找了几天了;但我卡住了。如果有人能给我提示,那就太好了!

感谢阅读!

最佳答案

您可以做的是在页面的任何脚本运行之前运行您的脚本,并将 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 函数。

关于javascript - GreaseMonkey - 在执行期间修改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42222739/

相关文章:

php - 编辑器中的 Slickgrid html 实体问题

javascript - 使用嵌套数组中的值对 json 对象进行分组求和和转换

javascript - codeceptJS/webdriverIO 使用抓取命令退出脚本

javascript - 如何在 Greasemonkey 中使用 javascript 重定向某些页面?

javascript - 将按钮移动到网站上的任何图像上 使用 Javascript for GreaseMonkey

javascript - 在函数完成或出现 DIV 后运行代码

javascript - 删除 Material UI 轮廓文本字段中的内部填充边框

javascript - 实现 vue 表时出现错误 "emitted value instead of an instance of error while compiling template "

Javascript 的 object.onClick 运行函数而不是设置 onClick,如何防止这种情况发生并只执行函数 onClick?

javascript - 使用 greasemonkey 自动点击按钮