grant
none就是直接运行在前端页面中
否则就是运行在一个沙盒环境,需要使用unsafeWindow去操作前端的元素.
unsafeWindow可以调用GM_*函数去执行一些更强大的操作,但一些原有的函数不能调用,也可以通过grant进行获得
//@grant none |
onurlchange为url变换时调用的函数
沙盒
RUN-AT
//脚本尽快注入,加载完html标签就执行 |
GM_*函数/油猴API
GM_*函数使用前都需要申明
//@grant GM_* |
GM_xmlhttpRequest跨域请求
GM_xmlhttpRequest
函数跨域与JQuery相似
//示例 |
使用前需要申明使用了api和链接的域名
// @grant GM_xmlhttpRequest |
外部资源引用
js资源的引用
// @require https://jsd.imbai.cn/pics/npm/vue@2.6.12/dist/vue.min.js |
如果是在沙盒环境(unsafeWindow)下,window函数不可用
如果是在原网环境下,可能会与原网页引用的js冲突
GM_*
函数没用时的备用方法
let script = document.createElement('script'); |
css资源的引用
// @resource css https://blog.icodef.com/wp-content/themes/Kratos-3.0.7/assets/css/kratos.min.css?ver=3.2.4 |
备用方法
let script = document.createElement('link'); |
备用方法缺点:没有预加载好资源,很明显的感觉到了刷新的样子. js的也一样
JQuery引入冲突解决办法
在开头引入这一段代码
this.$ = this.jQuery = jQuery.noConflict(true); |
油猴菜单设置
鼠标右键菜单
// @run-at context-menu |
浏览器右上角菜单
// @grant GM_registerMenuCommand |
语法:
GM_registerMenuCommand("菜单名字",执行的函数名,快捷键); |
let id = GM_registerMenuCommand("菜单名字",执行的函数名,快捷键); |
GM_get/setValue
// @grant GM_setValue |
GM_addStyle
GM_addStyle('#HMRichBox{display:none !important}') |
给相应的标签添加样式display:none样式,广告将不会显示。
如果网页内的iframe标签也存在广告的话,匹配iframe标签内的域名,添加对应的css样式即可。
这里不采用js处理,js处理对于一些后加载和iframe标签内的广告无法处理,同时也会让广告显示一会再消失,体验不好