油猴脚本写法是什么 油猴脚本编写基础与常用语法介绍
发布时间 - 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缓存驱动和应用优化方案

