如何在Greasemonkey中使用jQuery?

如何在Greasemonkey中使用jQuery?,jquery,greasemonkey,Jquery,Greasemonkey,我试着用这条线,但不起作用: // @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js jQuery在Greasemonkey中根本不起作用。在Greasemonkey中使用jQuery还有其他方法吗 -- 对于所有有相同问题的人,您必须将文件上载到greasespot,然后从那里安装 “创建新脚本”选项不起作用 也许你没有最新版本的Greasemonkey。是0.8版添加了@require //

我试着用这条线,但不起作用:

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
jQuery在Greasemonkey中根本不起作用。在Greasemonkey中使用jQuery还有其他方法吗

--

对于所有有相同问题的人,您必须将文件上载到greasespot,然后从那里安装


“创建新脚本”选项不起作用

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

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 
如果你没有0.8,那么使用琼·皮德拉描述的技巧

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


从0.9开始,Greasemonkey行为已更改(地址),因此它现在在每次编辑后加载所需的脚本;不再需要重新安装脚本。

将整个jQuery包含在Greasemonkey脚本中绝对没有错。只需获取源代码,并将其放在用户脚本的顶部即可。不需要做脚本标记,因为您已经在执行JavaScript了


用户只下载脚本一次,所以脚本的大小不是一个大问题。此外,如果您希望Greasemonkey脚本在非GM环境中工作(例如Opera的GM风格用户脚本或Safari上的Greasekit),不要使用GM独特的构造,如@require,这会有所帮助。

您可以使用Greasemonkey中的新用户脚本创建新脚本,但必须编辑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>
请记住,修改config.xml后,必须重新启动Greasemonkey浏览器才能重新加载设置

还要注意的是,您需要将jquery.js文件复制到脚本目录文件夹中,以使其正常工作。我对此进行了测试,只有在手动复制文件的情况下才有效


祝你快乐

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

我认为值得补充的一点是,一旦将jQuery包含在脚本中,就可以正常使用它,除了AJAX方法之外。默认情况下,jQuery查找XMLHttpRequest,它在Greasemonkey上下文中不存在。我写了关于为GM_xmlhttpRequest(XHR的Greasemonkey版本)创建包装器的地方,并使用jQuery的
ajaxSetup()
将包装版本指定为默认版本。完成此操作后,可以像往常一样使用
$.get
$.post


jQuery的
$.getJSON
也可能有问题,因为它使用
标记加载JSONP。这会导致错误,因为jQuery在Greasemonkey窗口的范围内定义回调函数,而加载的脚本在主窗口的范围内查找回调。您最好使用
$。改为使用
JSON.parse()

Update:正如下面的评论所说,这个答案已经过时了

正如其他人所说,@require只在脚本安装后运行。但是,您还应该注意,目前jQuery 1.4.*不适用于greasemonkey。有关详细信息,请参见此处:


您必须使用jQuery 1.3.2,直到情况发生变化。

如果直接导入jQuery脚本,您可能会得到
组件不可用

也许这就是@Conley所说的

你可以用

@require        http://userscripts.org/scripts/source/85365.user.js
这是一个修改版本,用于处理Greasemonkey,然后获取jQuery对象

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

如果您想在已经包含jQuery的站点上使用jQuery,这是一种方法(受BrunoLM启发):


我知道这不是问题的初衷,但它正日益成为一种常见的情况,而且你没有明确排除这种情况

当您想使用jQuery解除网页上事件的绑定时,@require meta不起作用,您必须使用网页中包含的jQuery库,然后使用
var$=unsafeWindow.jQuery在Greasemonkey中获取它

@require
仅在首次安装脚本时才被处理!
根据我的观察,它是在第一次执行时处理的!因此,您可以通过Greasemonkey的命令安装脚本,以创建一个全新的脚本。唯一需要注意的是,在添加
@require
部分之前,不会触发页面重新加载。(并保存新脚本…

如果您使用的是chrome,您必须选择一个替代方案,因为chrome不支持
@require

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 
资料来源:


更多关于Rob的详细信息和备选方案,那么我需要做什么?我正在使用新用户脚本链接创建我的用户脚本。我添加了@require,但它不起作用。那么我怎样才能让它工作呢?请解释我想要@require方法工作,因为它比脚本元素methodOk优雅得多,所以我让它工作了。谢谢我在Greasespot中上传了脚本,并从那里安装了它。我想象,当您从Greasemonkey中创建新脚本时,脚本会立即安装。该脚本是默认的空文件,这意味着您错过了需要任何外部脚本的机会。因此,无法在正在制作的新脚本上使用@require?:/“这很简单,@Quano。创建一个新的.user.js文件,在其中编写脚本,然后将其拖到浏览器上进行安装。仅当您从Greasemonkey的UI中创建脚本时,才存在需要外部脚本的限制,但不要求您必须使用
var $ = unsafeWindow.jQuery;