油猴脚本写法是什么 油猴脚本编写基础与常用语法介绍

发布时间 - 2026-01-11 00:00:00    点击率:
油猴脚本通过JavaScript实现网页自动化,需定义元数据块声明名称、版本、匹配网址等信息,使用@match指定生效页面,@run-at控制执行时机,结合GM_ API实现存储、请求、样式注入等功能,并通过DOM操作与事件绑定实现页面交互,适用于广告过滤、功能增强等场景。

如果您想让浏览器自动执行某些网页操作,例如去除广告、修改页面样式或增强功能,可以使用油猴脚本实现自动化控制。以下是关于油猴脚本编写的基本方法和常用语法说明。

本文运行环境:MacBook Pro,macOS Sonoma

一、油猴脚本的基本结构

油猴脚本以JavaScript为基础,通过在脚本头部定义元数据来控制其行为。这些元数据决定了脚本在哪些页面运行、何时注入以及需要请求哪些权限。

1、每个油猴脚本必须包含一个以// ==UserScript==开头的元数据块,该块用于声明脚本的配置信息。

2、元数据块中常见的字段包括:@name(脚本名称)、@namespace(命名空间)、@version(版本号)、@description(描述)、@match(匹配网址)等。

3、元数据块结束后需添加// ==/UserScript==作为结束标记,之后编写实际的JavaScript代码逻辑。

二、使用@match指定生效页面

@match指令用于定义脚本应在哪些URL上运行,支持通配符和正则表达式模式,确保脚本只在目标网页加载。

1、基本写法为// @match https://example.com/*,表示脚本将在https://example.com/下的所有子路径运行。

2、可添加多个@match行以支持不同域名,例如同时作用于百度和知乎搜索页。

3、若需精确匹配特定页面,可写成// @match https://www.google.com/search*,仅对Google搜索结果页生效。

三、设置脚本执行时机

通过@run-at指令控制脚本注入的时间点,避免因DOM未加载完成而导致操作失败。

1、默认情况下脚本在页面加载完成后执行,但可通过// @run-at document-start提前注入,在页面开始渲染前运行。

2、若需等待DOM完全构建后再执行,可使用// @run-at document-end,等效于监听DOMContentLoaded事件。

3、对于动态内容较多的网站(如单页应用),建议结合MutationObserver或setTimeout进行元素监测。

四、调用GM_ API增强功能

油猴提供了GM_系列API,允许脚本突破普通JavaScript的限制,实现跨域请求、本地存储等功能。

1、使用GM_setValue(key, value)GM_getValue(key, default)实现持久化数据存储。

2、通过GM_xmlhttpRequest(details)发起跨域HTTP请求,参数对象需包含method、url和onload回调函数。

3、利用GM_addStyle(css)向页面注入CSS规则,可用于隐藏元素或美化界面。

4、调用GM_registerMenuCommand(name, fn)在油猴面板中添加自定义菜单项,便于用户手动触发功能。

五、处理页面元素与事件绑定

脚本常需修改或监听网页中的特定元素,需正确选择目标并绑定交互逻辑。

1、使用document.querySelector()document.querySelectorAll()获取目标DOM节点。

2、当目标元素由JavaScript异步生成时,应使用MutationObserver监听DOM变化,一旦出现目标即执行操作。

3、为按钮或其他控件绑定点击事件时,采用element.addEventListener('click', handler)方式注册回调函数。

4、注意避免污染全局命名空间,将主逻辑封装在匿名函数或IIFE中执行。


# css  # javascript  # java  # go  # 正则表达式  # 浏览器  # 回调函数  # 知乎  # macbook  # mac  # ai 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 实例解析Array和String方法  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel如何实现模型的全局作用域?(Global Scope示例)  高端网站建设与定制开发一站式解决方案 中企动力  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  常州企业网站制作公司,全国继续教育网怎么登录?  canvas 画布在主流浏览器中的尺寸限制详细介绍  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在景安服务器上快速搭建个人网站?  如何在建站主机中优化服务器配置?  浅谈javascript alert和confirm的美化  如何用PHP工具快速搭建高效网站?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel模型事件有哪些_Laravel Model Event生命周期详解  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何在阿里云域名上完成建站全流程?  详解vue.js组件化开发实践  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  个人摄影网站制作流程,摄影爱好者都去什么网站?  phpredis提高消息队列的实时性方法(推荐)  如何快速搭建安全的FTP站点?  如何在阿里云服务器自主搭建网站?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Android滚轮选择时间控件使用详解  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel storage目录权限问题_Laravel文件写入权限设置  原生JS实现图片轮播切换效果  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Windows Hello人脸识别突然无法使用  jQuery 常见小例汇总  如何用5美元大硬盘VPS安全高效搭建个人网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何批量查询域名的建站时间记录?  如何彻底卸载建站之星软件?  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何使用Collections进行数据处理?(实用方法示例)  Android自定义控件实现温度旋转按钮效果  JS实现鼠标移上去显示图片或微信二维码  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何快速辨别茅台真假?关键步骤解析  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案