firefox油猴脚本编写.md
油猴脚本编写
简介
油猴可以方便的用自定义js内嵌到网页中。支持多种浏览器。
用户脚本是什么?
用户脚本是一段代码,它们能够优化您的网页浏览体验。安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容。在 Greasy Fork 上的用户脚本都是由用户编写并向全世界发表的,您可以免费安装,轻松体验。
文档: https://www.tampermonkey.net/documentation.php
例子
消除浏览器的警告弹窗(alert)
-
需求: 在一个刷课网页上,当页面时间达到一定时间后,会弹出
confirm()
和alert()
弹窗,保证没有挂机行为。 -
思路: 使用js劫持,重写
confirm()
和alert()
函数
步骤
- 新建用户脚本
- 进行重写
alert()
和confirm()
函数
// ==UserScript== // @name MYTEST // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match http://xxxx/* // @run-at document-start // @grant none // ==/UserScript== (function() { 'USE SCRIPTS'; window.confirm = function(s) { return true; }; window.alert = function(s) { console.log(s); } })();
说明: 第8行的document-start
保证脚本在网页加载之前运行,这样可以覆盖掉网页本身的confirm()
和alert()
函数。
==UserScript== 与 ==/UserScript== 之间的内容是元注释,写给油猴插件看的,常用的标签: name 脚本名字 namespace 命名空间,一般用你的域名就好 version 版本,每次检查更新,版本变化了才会真正更新脚本 match 指在什么网站生效,可以使用 * 通配符 include 同 match exclude 排除的网站 icon 脚本图标,可以是 url 或 base64 require 依赖的资源,可以加载 cdn 的库。比如我需要加载 otplib 的库,总不能把源代码拷一份在脚本里吧。 run-at 脚本运行的时机: document-start 尽早执行; document-body 有 body 标签时执行; document-end 网页加载完(DOMContentLoaded); document-idle 在 DOMContentLoaded 之后执行,这是默认值; context-menu 只 Chrome 系浏览器有效,在右键菜单时执行 grant 是申请的权限,可以有多个,值是需要使用的函数的方法 常用需要声明权限的方法有: // @grant GM_getValue //获取保存的值 // @grant GM_setValue //保存设置项 // @grant GM_openInTab //在新标签页打开 // @grant GM_xmlhttpRequest //ajax 请求,声明这个权限才能跨域 // @grant GM_setClipboard //访问剪切板 // @grant GM_registerMenuCommand //在插件图标上注册一个菜单 // @grant unsafeWindow //访问全局的 window 对象,不声明的话访问的 window 其实是沙盒 window 并不能影响全局
一般的js函数劫持:
(function(){ var _alert = alert; windows.alert = function(s){ // 劫持代码 _alert(s); // ... } })();
本文作者:nsfoxer
本文链接:https://www.cnblogs.com/nsfoxer/p/16321415.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App