为X浏览器撰写脚本-油猴脚本

上一篇,介绍了简单的JS脚本使用方法,本篇文章介绍油猴脚本在X浏览器中的用法。什么是油猴脚本,在这里就不展开了请网上自行搜索。我们主要介绍X浏览器对油猴脚本规范的支持情况。

一个简单的油猴脚本示例

油猴脚本通常分为两部分,元数据部分和代码部分。元数据通常放置在整个脚本的开头,主要起到对脚本的一些描述,参数设定,声明,包括脚本名称、简介、作者、版本号、运行方式、所依赖的库文件声明等。

下面是一个最简单的油猴脚本定义

exp-gm-say-hello.js

1
2
3
4
5
6
7
8
9
10
11
12
13
// ==UserScript==
// @name Say hello
// @namespace com.example.hello
// @version 0.1
// @description When you open the site example.com it says "HELLO"
// @author You
// @match www.example.com
// ==/UserScript==

(function() {
'use strict';
alert("Hello!");
})();

元数据

X浏览器兼容油猴脚本常用的元数据标记,并在其基础上做了写扩展,下面是X浏览器目前所支持的元数据标记。

  • @name 用来定义脚本名称

  • @namespace 唯一标识一个脚本,可以是唯一的字符串,或者域名网址等。

  • @icon 声明显示在脚本列表以及浏览器扩展菜单中的图标。可以是一个远端图标url或者Base64编码的 Data URI。

  • @description 脚本简介,用法说明等内容。

  • @author 脚本的作者名称,昵称等。

  • @version 声明该脚本的版本号。

  • @match 用来描述脚本的作用域,可以在元数据中存在多行声明。

  • @include 和@match类似,用来描述脚本的作用域,可以在元数据中存在多行声明。

  • @exclude 用来排除一些网站,在没有指定脚本作用域的情况下,告诉浏览器在某些特定域名下不要执行脚本。

  • @require 声明该脚本执行前,需要依赖第三方的库,可以在元数据中存在多行声明。

  • @resource 声明该脚本执行需要依赖的一些资源文件,如css,文本,图片资源等,可以在元数据中存在多行声明。

  • @run-at 这个用例声明脚本的执行时机,以及执行方式。可以为下面几个取值。

    • document-start 指定脚本在DOM树开始的时候执行,需要脚本尽早执行的时候添加此声明。
    • document-end 指定脚本在DOM数据加载完毕的时候执行。
    • document-idle 页面加载完毕的时候执行。当元数据没有@run-at声明时,脚本默认在此时机执行。
    • main-menu X浏览器的扩展声明,表示此脚本不自动执行,用户通过主菜单扩展点手动执行。
    • context-menu X浏览器扩展声明,表示此脚本不自动执行,用户通过长按菜单的扩展点执行。
    • tool-menu X浏览器扩展声明,表示此脚本不自动执行,用户通过页面工具菜单的扩展点执行。

支持API

同样,在代码层面,X浏览器也兼容了油猴脚本中一些常用的API 。下面是目前支持的一些API函数说明。

  • GM_addStyle 为当前页面添加css样式表字符串。

  • GM_getResourceText从元数据的@resource 标记中读取指定资源名称对应url中的内容,通常我们把css文件放置在远端服务器,然后通过此方法读取其内容,使用GM_addStyle方法应用到当前页面。

  • GM_getResourceURL 从元数据的@resource 标记中读取指定资源名称对应的URL。和GM_getResourceText不同的是这个方法返回的是资源对应的URL而不是其内容。

  • GM_openInTab 在新标签中打开一个页面。

  • GM_download 调用浏览器默认下载器,下载一个指定的url.

  • GM_setClipboard 拷贝内容到系统剪贴板中。

  • GM_setValue 保存一个键值对到浏览器的localStorage对象。

  • GM_getValue 从浏览器的localStorage读取指定key的内容。

  • GM_listValues 返回一个数组,包含所有存储的key名称。

  • GM_deleteValue 从localStorage对象中删除一个键值对。

  • GM_notification 弹出一个消息提醒

  • GM_registerMenuCommand 在浏览器长按菜单中注册一个菜单选项,并绑定回调函数。

  • GM_xmlhttpRequest 使用浏览器的xmlHttpRequest对象发起一个异步请求。

到此,我们已经介绍完了X浏览器目前所支持的油猴脚本元数据标记和API。你可以参考下面的链接

关于这些元数据标记和API的使用示例,可以前往油猴脚本代码示例查看示例代码,通过安装运行这些测试脚本了解以上介绍的相关API的使用方法。

相关文档