小白教程
所有教程
关于
Search
172.69.59.18
172.69.59.18
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Greasemonkey 元数据”的源代码
本页内容
上一节:
Greasemonkey_介绍
下一节:
Greasemonkey_API
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[Category:Greasemonkey中文手册|3]] 元数据 包含了用户脚本的元数据。一般包含脚本名称、作者、版本、更新地址、命名空间、允许执行和不执行的页面地址。 这些数据一般以 JavaScript 注释形式储存于脚本顶部。 <sample title="" desc=""> // ==UserScript== // @name New Userscript // @namespace https://xiaobai.wang/ // @version 0.1 // @description try to take over the world! // @author You // @match https://jixunmoe.github.io/gmDevBook/ // @icon https://www.google.com/s2/favicons?sz=64&domain=github.io // @grant none // ==/UserScript== </sample> == 语法 == 元数据必须按照以下格式填写 <syntaxhighlight lang="javascript" line> // ==UserScript== // @属性名 属性值 // ==/UserScript== </syntaxhighlight> 每一条属性必须使用双斜杠'''<nowiki>//</nowiki>'''开头,不得使用块注释<nowiki>/* */</nowiki>。 与此同时,所有的脚本元数据必须放置于 '''<nowiki>// ==UserScript==</nowiki>''' 和 '''<nowiki>// ==/UserScript==</nowiki>''' 之间才会被认定为有效的元数据。 元数据名和值中间可以为了保持美观添加多个空格。 == Meta属性 == === @name === <syntaxhighlight lang="js" line> // @name 测试用脚本 </syntaxhighlight> 用于指示该脚本名称,将显示于「脚本管理」及「油猴菜单」。该值同时为相同命名空间的唯一识别码。 如果未指定该参数,将尝试从文件名获取。 === @description === <syntaxhighlight lang="js" line> // @description This script even does the laundry! </syntaxhighlight> 简单描述当前脚本的功能。也会于用户脚本管理界面显示。 === @namespace === <syntaxhighlight lang="js" line> // @namespace https://xiaobai.wang/ </syntaxhighlight> 命名空间和脚本名称是 GM 用于识别脚本唯一性的方法。如果两个脚本的名称和命名空间均相同,那么后安装的脚本将覆盖之前安装的脚本。 一般脚本作者将其项目使用相同命名空间,然后每个项目使用不同名称。 同时因为命名空间没有语法限制,一些作者直接使用项目首页作为其命名空间。该值只要不与他人重复即可。 === @version === <syntaxhighlight lang="javascript" line> // @version 1.0 </syntaxhighlight> 指定脚本的版本号,GM 用来判断脚本是否更新的依据。 === @require === <syntaxhighlight lang="js" line> // @require http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js </syntaxhighlight> 引用一个外部链接的脚本作为库使用。最常见的外部库为 jQuery。 因为 GM 对 IE 的支援不佳,因此一般不用考虑 IE 的兼容性,放心去搞吧~ === @downloadURL === <syntaxhighlight lang="javascript" line> // @downloadURL https://www.xiaobai.wang/myscript.user.js </syntaxhighlight> GM 的默认设定要求该值使用 https:// 协议。 该值用于指定发现更新后使用的脚本地址。若未指定则使用安装脚本地址。 === @updateURL === <syntaxhighlight lang="javascript" line> // @updateURL https://www.xiaobai.wang/myscript.meta.js </syntaxhighlight> 用于检查更新使用的地址。该地址应只包含元数据而不包含脚本内容。 === @grant === <syntaxhighlight lang="javascript" line> // @grant GM_xmlhttpRequest </syntaxhighlight> 指定脚本所请求的权限,如 unsafeWindow 用于访问浏览器的 window 对象。 其它可选值则为 GM 提供的 GM_ 开头的 API。 === @include / @exclude === <syntaxhighlight lang="js" line> // ==UserScript== // @include http://www.xiaobai.wang/foo/* // @include http://www.xiaobai.wang/*.bar // @exclude http://www.xiaobai.wang/foo/baz // GM 0.9.8 开始, @include 允许使用正则表达式匹配 // @include /^https?://www\.example\.com/.*$/ // @include /^http://www\.example\.(org|net)// // ==/UserScript== </syntaxhighlight> @include 和 @exclude 使用 * 表示任意字符,或标准正则表达式对象。 同时,它还支持一个特殊的匹配符,.tld。 @include http://www.example.tld/* 请注意: 如果使用 tld 匹配请务必确保数据不会被泄露给无关网站。 其中, @exclude 的匹配权限比 @include 要高。 === @match === <syntaxhighlight lang="javascript" line> // @match *://mail.google.com/* </syntaxhighlight> GM 根据 Chrome 的 [https://developer.chrome.com/docs/extensions/mv3/match_patterns/ Match Patterns] 实现的另外一种匹配方案,比 @include / @exclude 的匹配更严格。详细请参考上述 Chrome 开发者页面。'''推荐使用该方式''' === @icon === <syntaxhighlight lang="javascript" line> // @icon http://www.example.org/icon.png </syntaxhighlight> 为脚本定制一个图标,显示在脚本列表以及浏览器扩展菜单中的图标。可以是一个url图标资源或者Base64编码的 Data URI。 如果你的脚本是在某一个网站上面使用的,可以通过下面的方法获取文章的favicon <syntaxhighlight lang="python" line> // @icon https://www.google.com/s2/favicons?sz=64&domain=github.io </syntaxhighlight> === @resource === <syntaxhighlight lang="javascript" line> // @resource 资源名 http://www.xiaobai.wang/example.png </syntaxhighlight> 该参数可指定任意数量的资源。但请注意,同一脚本下资源名不得重复。 资源将在安装脚本的时候下载一次,之后不会进行更新。 这些资源可以稍后通过 GM_getResourceURL 或 GM_getResourceText 获取其内容或地址。 自从 GM 0.9.0, 如果 GM 发现 @resource 的值被更改后将尝试重新下载。 === @run-at === <syntaxhighlight lang="js" line> // @run-at document-end </syntaxhighlight> 该值用于指定脚本执行的时机,可用的参数只能为 document-start 和 document-end 两种。 Chrome 下的 TamperMonkey 还提供了 document-body 这一选项,但是 GM 官方文档找不到说明,最好避免使用。 如果不填写该值,GM 将采用 document-end 作为默认值。 检查脚本是否执行于 document-start,检查 document.readyState 的值即可: <syntaxhighlight lang="js" line> if ('loading' == document.readyState) { alert("脚本执行于 document-start。"); } else { alert("脚本当前的 document.readyState: " + document.readyState); } </syntaxhighlight> 元数据标记@run-at 的取值如下 {|class="table" ! 取值 ! 描述 |- | document-start | 指定脚本在DOM树开始的时候执行,需要脚本尽早执行的时候添加此声明。 |- | document-end | 指定脚本在DOM数据加载完毕的时候执行 |- | document-idle | 页面加载完毕的时候执行。当元数据没有@run-at声明时,脚本默认在此时机执行 |- | main-menu | X浏览器的扩展声明,表示此脚本不自动执行,用户通过主菜单扩展选项手动执行。 |- | context-menu | X浏览器扩展声明,表示此脚本不自动执行,用户通过长按菜单的扩展选项执行 |- | tool-menu | X浏览器扩展声明,表示此脚本不自动执行,用户通过页面工具菜单的扩展选项执行 |}
返回至“
Greasemonkey 元数据
”。
上一节:
Greasemonkey_介绍
下一节:
Greasemonkey_API