乐于分享
好东西不私藏

Tampermonkey 浏览器插件 /grant 使用细节

本文最后更新于2025-06-25,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Tampermonkey 浏览器插件 /grant 使用细节

Tampermonkey 浏览器插件 /grant 使用细节

本文主要简略概括Tampermonkey插件中,//grant 声明不同的参数下,对原页面构成的影响,以及作用域。\n示例代码中我们在脚本中定义一个test方法,然后在目标网站中,打开浏览器的控制台,查看这个方法的状态\n \n场景1:不声明//grant\n// ==/UserScript==\n \n(function () {\n\’use strict\’;\nfunction test(){\nconsole.log(\’test\’)\n}\n})();\n \n控制台直接调用方法 test() 提示报错:\nUncaught ReferenceError: test is not defined\nat <anonymous>:1:1\n \n可以看到在不声明 //grant 的时候,油猴脚本的代码作用环境是沙箱中,并不会干扰原页面的运行环境\n \n场景2:不声明//grant ,改造test方法为挂载到window对象中\n// ==/UserScript==\n \n(function () {\n\’use strict\’;\nwindow.test = ()=>{\nconsole.log(\’test\’)\n}\n})();\n浏览器控制台输出了一样的结果:\nVM1783:1 Uncaught ReferenceError: test is not defined\nat <anonymous>:1:1\n \n说明这个沙箱环境是把原来的Window 对象拷贝了一份,操作脚本中的window并不会影响页面中的window,并且数据并不互通,作用域也完全不同\n \n场景3: 声明 //grant none 定义普通的test()方法\n可以看到控制台输出结果还是未定义,说明作用域是不同的\n场景4:声明//grant none 挂载到window对象test方法\n可以看到浏览器可以正常输出,说明window对象是同一个,当前脚本的作用域不同\n \n说明声明//@grant none 之后,油猴的脚本运行环境和页面是同一个window,不同的作用域。\n也就是说可以在脚本中随意定义方法和函数,不会影响原页面,但是如果要挂载到window对象的时候,一定要避免定义冲突
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Tampermonkey 浏览器插件 /grant 使用细节
×
订阅图标按钮