Greasemonkey @require jQuery不工作"组件不可用"

Gre*_*g K 10 javascript jquery greasemonkey firefox-addon

在这里看到了另一个关于在Greasemonkey中加载jQuery的问题.尝试了这个方法后,在我的==UserScript==标签中使用了这个require语句:

// @require    http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
Run Code Online (Sandbox Code Playgroud)

我仍然在Firefox的错误控制台中收到以下错误消息:

Error: Component is not available
Source File: file:///Users/greg/Library/Application%20Support/
       Firefox/Profiles/xo9xhovo.default/gm_scripts/myscript/jquerymin.js
Line: 36
Run Code Online (Sandbox Code Playgroud)

这会阻止我的greasemonkey代码运行.我确保@require在安装之前包含了for jQuery并保存了我的js文件,因为只在安装时加载了所需的文件.

码:

// ==UserScript==
// @name           My Script
// @namespace      http://www.google.com
// @description    My test script
// @include        http://www.google.com
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// ==/UserScript==

GM_log("Hello");
Run Code Online (Sandbox Code Playgroud)

我在我的Macbook Pro,Leopard(10.5.8)上的Firefox 3.5.7上安装了Greasemonkey 0.8.20091209.4.我已经清除了我的缓存(除了cookie)并禁用了除Flashblock 1.5.11.2,Web Developer 1.1.8和Adblock Plus 1.1.3之外的所有其他插件.

config.xml安装了我的Greasemonkey脚本:

<UserScriptConfig>
<Script filename="myscript.user.js" name="My Script" 
 namespace="http://www.google.com" description="My test script" enabled="true" 
 basedir="myscript">
    <Include>http://www.google.com</Include>
    <Require filename="jquerymin.js"/>
</Script>
Run Code Online (Sandbox Code Playgroud)

我可以看到jquerymin.js坐在gm_scripts/myscript/目录中.

此外,在安装Greasemonkey脚本时,在控制台中发生此错误是否常见?

Error: not well-formed
Source File: file:///Users/Greg/Documents/myscript.user.js
Line: 1, Column: 1
Source Code:
   // ==UserScript==
Run Code Online (Sandbox Code Playgroud)

Lam*_*hau 7

我找到了一种非常理想的方法来使用它与jQuery 1.4.1 - 这似乎解决了它.这是新的浏览器嗅探似乎"打破"它.

jQuery的1.4.1.min.js:

  [old]  36: var o=r.createElement("div");n="on"+n;var m=n in o;
  [new]  36: var o=r.createElement("div");n="on"+n;var m=true;
Run Code Online (Sandbox Code Playgroud)

jQuery的1.4.1.js

  [old] 934: var isSupported = (eventName in el);
  [new] 934: var isSupported = true;
Run Code Online (Sandbox Code Playgroud)


And*_*ers 6

好的,所以我更深入地研究了这个.我完全使用了你的脚本,但使用了我们的JQuery版本,使它看起来像这样:

// ==UserScript==
// @name           My Script
// @namespace      http://www.google.com
// @description    My test script
// @include        http://www.google.se/*
// @include        http://www.dn.se/*
// @require        http://myserver/jquery-1.3.2.js
// ==/UserScript==

GM_log("Hello");
Run Code Online (Sandbox Code Playgroud)

这对我来说很好,我的猜测,谷歌api上的JQuery缺少一些功能.因为上面的代码,工作正常.另请注意/*每个网址的末尾,请包含该网址.

尝试另一个JQuery并更改网址,它应该正确世界.


oeu*_*ete 6

我试图用GM 0.8和jquery 1.4.2解决这个问题,并且发现了这个问题:http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-生成-一个误差

在我看来,这个问题的确切答案以及如何解决这个问题.解决方法对我有用.