我正在尝试使用Greasemonkey的@require
/ @include
方法添加jQuery,但它不起作用。出现以下错误:
Uncaught ReferenceError: $ is not defined (repeated 10 times)
这是我的示例代码:
// ==UserScript==
// @description Bored, really bored.
// @name MatteoSample
// @namespace MatteoSampleNamespace
// @include *
// @include http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
$(document).slideUp();
我该如何解决?
答案 0 :(得分:10)
@ic
不是有效的元规则,因此被忽略
如果要在用户脚本中加载jQuery,请使用@require
。
// ==UserScript==
// @name Foo
// @namespace Bar
// @include *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
编辑:在评论中,您说您使用的是 Chrome 。 Chrome 不支持@require
规则。另见:
如果您想在Chrome中获得完整的Greasemonkey支持,请使用Tampermonkey。
Chrome 不原生支持GreaseMonkey。每当加载.user.js
文件时,它都会以Content script的形式转换为Chrome扩展程序。
有关Chrome中用户脚本的详细信息,请参阅this documentation。
用户脚本实际上已复制到扩展程序的目录中:
// ==UserScript==
// @name Foo
// @namespace Bar
// @include *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
alert(typeof $)
基于元块创建manifest.json
文件。当用户脚本包含@include
规则时,其matches
规则将包含https://*/*
和http://*/*
,因为@include
规则过于宽松。
生成的manifest.json
的内容如下:
{
"content_scripts": [ {
"exclude_globs": [ ],
"include_globs": [ "*" ],
"js": [ "script.js" ],
"matches": [ "http://*/*", "https://*/*" ],
"run_at": "document_idle"
} ],
"converted_from_user_script": true,
"description": "",
"key": "+.... some key ...=",
"name": "Foo",
"version": "1.0"
}
答案 1 :(得分:1)
chrome不支持greasemonkey脚本,而是支持特定的greasemonkey命令 (@require,GM_等)
要使这些东西正常工作,请安装chrome addon“TamperMonkey”