浏览器脚本开发

冰岩作坊 December 14, 2023

浏览器用户脚本一般是小型的 JavaScript 程序,可用于向网页添加新功能或修改现有功能,允许用户自定义并增强网页功能,

当我们使用浏览器打开网页的时候,前端资源都会被下载到用户的电脑中,并通过浏览器解析展示出来。此时整个网页的前端部分已经与部署在服务器中的代码无关,可以在用户端随意修改(当然刷新一下就会被恢复)。因此,我们既可以通过f12打开浏览器开发者工具进行代码查看与修改,也可以通过执行 js 脚本在页面中实现各种各样的功能。

Tampermonkey

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。

创建脚本

在安装 Tampermonkey 浏览器扩展后,(以Chrome为例)可以通过点击浏览器右上角的 Tampermonkey 图标打开界面,点击添加新脚本进入脚本编辑器。

### 脚本配置

在创建脚本之后,会默认生成一段初始代码。

其中,顶部的注释用于声明脚本的配置信息

比较重要的字段:

用于声明该脚本运行的网页

// @match   /^https?://(www)?.?(juejin|zhihu).(com|cn)/          使用正则匹配知乎或掘金

用于在脚本运行前引用 js 第三方库

// @require https://code.jquery.com/jquery-2.1.4.min.js

通过GM_getResourceURL 和 GM_getResourceText预加载可访问的资源

// @resource customCSS https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css// 引入bootstrap的css文件并加入html中const css = GM_getResourceText(“customCSS”);GM_addStyle(css);

定义可以被GM_xmlhttpRequest访问的网站,用于调用一些API接口。

// @connect ://.test.com/

声明将会用到的GM_* API

// @grant  GM_addStyle// @grant    GM_getResourceText

声明脚本运行时机

// @run-at document-start   以最快速度注入脚本// @run-at document-body 当body元素挂载时// @run-at document-end  在DOMContentLoaded时/后// @run-at document-idle 在DOMContentLoaded后// @run-at context-menu  点击了右键菜单

脚本开发

// 使用原生js实现const heads = document.querySelector(‘head’);const style = document.createElement(‘style’);style.setAttribute(‘type’, ‘text/css’);style.innerHTML = pre,code.signin;heads.append(style);// 使用GM api实现GM_addStyle(pre,code.signin)

GM_registerMenuCommand(“GitHub 搜索”, function () `, );  }});

工程化开发