1.这里的UserScript指的是,油猴插件或者Tampermonkey插件等支持的格式如下例子:
// ==UserScript== // @name // @namespace http://AsionTang.CN // @version 0.1 // @description // @match <$URL$> // @copyright 2013+, AsionTang // @grant none // ==/UserScript==
而谷歌浏览器直接支持将此脚本安装为扩展。那么在编写此脚本时,出现的疑问是:谷歌浏览器对 UserScript 脚本的兼容性如何?
网搜答案没有简单得到答案,但是多亏开源的优势,直接阅读Chrome的源代码即可得到答案:
Chrome相关源码参考地址:Log of /trunk/src/chrome/browser/extensions/user_script_master.cc
当前为201855版本可见如下代码:
static const base::StringPiece kUserScriptBegin("// ==UserScript=="); 72 static const base::StringPiece kUserScriptEng("// ==/UserScript=="); 73 static const base::StringPiece kNamespaceDeclaration("// @namespace"); 74 static const base::StringPiece kNameDeclaration("// @name"); 75 static const base::StringPiece kVersionDeclaration("// @version"); 76 static const base::StringPiece kDescriptionDeclaration("// @description"); 77 static const base::StringPiece kIncludeDeclaration("// @include"); 78 static const base::StringPiece kExcludeDeclaration("// @exclude"); 79 static const base::StringPiece kMatchDeclaration("// @match"); 80 static const base::StringPiece kExcludeMatchDeclaration("// @exclude_match"); 81 static const base::StringPiece kRunAtDeclaration("// @run-at"); 82 static const base::StringPiece kRunAtDocumentStartValue("document-start"); 83 static const base::StringPiece kRunAtDocumentEndValue("document-end"); 84 static const base::StringPiece kRunAtDocumentIdleValue("document-idle");
而在源码最后还有一句:
// TODO(aa): Handle more types of metadata.
那么可见,当前尚有很多UserScript的声明头没有得到支持。