描述
元数据 包含了用户脚本的元数据。一般包含脚本名称、命名空间、执行地址和不执行的地址。
这些数据一般为 JavaScript 注释形式储存于脚本顶部。
例子
- // ==UserScript==
- // @name 我的第一个脚本
- // @namespace http://www.example.com/gmscripts
- // @description 看我突破天际的钻头
- // @include http://www.example.com/*
- // @include http://www.example.org/*
- // @exclude http://www.example.org/foo
- // @require https://example.com/foo.js
- // @resource logo logo.png
- // @resource yooo http://www.example.com/resource2.png
- // @version 1.0
- // @icon http://www.example.net/icon.png
- // ==/UserScript==
语法
元数据必须按照以下格式填写
- // ==UserScript==
- // @属性名 属性值
- // ==/UserScript==
每一条属性必须使用双斜杠//
开头,不得使用块注释/* */
。
与此同时,所有的脚本元数据必须放置于 // ==UserScript==
和 // ==/UserScript==
之间才会被认定为有效的元数据。
元数据名和值中间可以为了保持美观添加多个空格。
值
https://
协议。
该值用于指定发现更新后使用的脚本地址。若未指定则使用安装脚本地址。
unsafeWindow
用于访问浏览器的 window
对象。
其它可选值则为 GM 提供的 GM_
开头的 API。
- // ==UserScript==
- // @include http://www.example.com/foo/
- // @include http://www.example.org/*.bar
- // @exclude http://www.example.com/foo/baz
- // GM 0.9.8 开始, @include 允许使用正则表达式匹配
- // @include /^https?://www.example.com/.$/
- // @include /^http://www\.example\.(org|net)//
- // ==/UserScript==
@include
和 @exclude
使用 \
表示任意字符,或标准正则表达式对象。
同时,它还支持一个特殊的匹配符,.tld
。
请注意: 如果使用 tld 匹配请务必确保数据不会被泄露给无关网站。 其中,
- @include http://www.example.tld/*
@exclude
的匹配权限比 @include
要高。
@include / @exclude
的匹配更严格。详细请参考上述 Chrome 开发者页面。
32x32
大小的图标。
@resource
的值被更改后将尝试重新下载。
document-start
和 document-end
两种。
Chrome 下的 TamperMonkey 还提供了 document-body 这一选项,但是 GM 官方文档找不到说明,最好避免使用。
如果不填写该值,GM 将采用 document-end
作为默认值。
检查脚本是否执行于 document-start
,检查 document.readyState 的值即可:
- if ('loading' == document.readyState) {
- alert("脚本执行于 document-start。");
- } else {
- alert("脚本当前的 document.readyState: " + document.readyState);
- }
该元数据表示代码将不会使用
- // @unwrap
(function () { /* 代码 */ })();
这样的形式执行,因此请注意不要在外部填写 return
语句。