我如何在Greasemonkey中使用jQuery?

我试图把这一行,但它不工作:

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js 

jQuery在Greasemonkey中根本不起作用。 有没有其他的方法来在Greasemonkey中使用jQuery?

对于所有有同样问题的人,您必须将file upload到greasespot,然后从那里安装。

创build新脚本选项不起作用!

也许你没有最近的版本的Greasemonkey。 它是版本0.8添加@require

 // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 

如果你没有0.8,那么使用Joan Piedra描述的技术手动添加一个script元素到页面 。

在版本0.8和0.9之间, @require 仅在脚本第一次安装时处理。 如果更改所需脚本的列表,则需要卸载脚本并重新安装; Greasemonkey在安装时下载一次所需的脚本,然后使用一个caching的副本。

从0.9开始,Greasemonkey行为已经发生了变化(解决了切线相关的问题 ),以便在每次编辑之后加载所需的脚本; 重新安装脚本不再是必要的。

如果你想在已经包含它的站点上使用jQuery,那么这是一条路(受BrunoLM启发):

 var $ = unsafeWindow.jQuery; 

我知道这不是问题的最初意图,但它日益成为一个普遍的情况,你没有明确排除这种情况。 ;)

在Greasemonkey脚本中包含整个jQuery是完全没有问题的。 只要拿到源代码,并把它放在你的用户脚本的顶部。 无需制作脚本标记,因为您已经在执行JavaScript了!

用户只需要下载脚本一次,所以脚本的大小不是一个大问题。 另外,如果您希望Greasemonkey脚本能够在非GM环境中工作(例如Opera的GM-esque用户脚本或Safari上的Greasekit),则不会使用GM特有的结构(如@require)。

Rob的解决scheme是正确的 – 在jQuery库中使用@require ,并确保重新安装脚本,以便处理指令。

有一件事我认为值得补充的是, 除了AJAX方法之外,只要将它包含在脚本中,就可以正常使用jQuery。 默认情况下,jQuery查找XMLHttpRequest,Greasemonkey上下文中不存在。 我写了一个解决方法 ,为GM_xmlhttpRequest(Greasemonkey版本的XHR)创build一个包装,并使用jQuery的ajaxSetup()来指定您的包装版本作为默认值。 一旦你这样做,你可以像往常一样使用$.get$.post

您可能也有jQuery的$.getJSON问题,因为它使用<script>标签加载JSONP。 这会导致错误,因为jQuery在Greasemonkey窗口的作用域中定义了callback函数,并且加载的脚本在主窗口的范围内查找callback函数。 你最好的select是使用$.get并用JSON.parse()parsing结果。

更新 :如下面的评论所说,这个答案已经过时了。

正如其他人所说,@require只有在脚本安装后才能运行。 不过,你也应该注意到目前jQuery 1.4。*不能和greasemonkey一起工作。 你可以在这里看到的细节: http : //forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error

你将不得不使用jQuery 1.3.2,直到事情改变。

如果您使用的是Chrome,则必须select其他方法,因为Chromium不支持@require

来源: Chromium项目 – 用户脚本

更多细节和select我如何在Google Chrome的Greasemonkey脚本中使用jQuery?

您可以使用Greasemonkey中的新build用户脚本创build一个新脚本,但是您必须编辑gm_scripts文件夹内的config.xml文件。

你的config.xml文件应该有这样的语法:

 <Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test"> <Include>http://*</Include> <Require filename="jquery.js"/> </Script> 

注意<Require>标签。

在你的脚本中,你可以使用直接的jQuery语法。 确保在Greasemonkey标题中有要求标记。 这是一个Hello World示例:

 // ==UserScript== // @name Test jQuery // @namespace http://www.example.com/jQueryPlay/ // @description Just a test // @include http://* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js // ==/UserScript== $(document).ready(function() { alert("Hello world!"); }); 

请记住,在修改config.xml后,您必须重新启动Greasemonkey的浏览器才能重新加载设置。

另外请注意,您需要将jquery.js文件复制到您的脚本目录文件夹才能使其工作。 我testing了这一点,它只有在你真的在那里手动复制文件时才有效。

快乐jQuerying!

当你想使用jQuery在网页上解除绑定事件时,@require meta不起作用,你必须使用包含在网页中的jQuery库,然后用var $ = unsafeWindow.jQuery;获取Greasemonkey var $ = unsafeWindow.jQuery; jquery事件处理程序如何在greasemonkey中解除绑定?

如果直接导入jQuery脚本,可能会导致Component unavailable

也许这就是康纳所说的…

您可以使用

 @require http://userscripts.org/scripts/source/85365.user.js 

这是在Greasemonkey上工作的修改版本,然后获取jQuery对象

 var $ = unsafeWindow.jQuery; $("div").css("display", "none"); 

@require不仅在脚本第一次安装的时候被处理! 根据我的观察,它在第一次执行时被处理! 所以你可以通过Greasemonkey的命令安装一个脚本来创build一个全新的脚本。 你唯一需要关心的是,没有页面重新加载触发,因为你添加@require部分。 (并保存新的脚本…)