2

【以下为自行解决问题后的自答贴。我想有些人可能会觉得它很有用。]

我尝试在 Greasemonkey 脚本中使用 JQueryresizabledraggable

  • 我在 JS 控制台中收到错误“组件不可用(NS_ERROR_NOT_AVAILABLE)”,
  • 或者:
  • 我在 JS 控制台中没有错误,但可拖动不起作用。

如何解决这个问题?

4

1 回答 1

2

原因是某些版本的 JQuery 及其插件与 GreaseMonkey 不兼容。

以下是已确认可与 Firefox 7.0.1 + GreaseMonkey 0.9.11 一起使用的代码片段(应该可以在 GM 0.8+ 的 Fx 3.0+ 中使用)。它利用了 GreaseMonkey 的 0.8+@require@resource命令。@require安装用户脚本时会下载和中的文件@resource (一次),并存储在磁盘上与用户脚本相同的文件夹中。当依赖关系集改变时,例如用户玩代码,所有依赖关系都被重新下载。

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js
// @require       http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js

$('#someid').draggable().resizable();

您可以在 s 之后添加以下内容@require以加载 JQuery UI CSS,但这不是必需的:

// @resource  jqueryUICSS https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css

// load JQuery UI CSS
var jqueryUICSS = GM_getResourceText("jqueryUICSS");
GM_addStyle(jqueryUICSS);

关于兼容性的一些信息:

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js //DRAGGABLE FAILS
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js //INCOMPATIBLE
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js //OK
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js //DRAGGABLE FAILS

// @require       http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js //OK
// @require       http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js //seems okay, but http://wiki.greasespot.net/Third-Party_Libraries says some other stuff is incompatible

// @resource  jqueryUICSS https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css //OK
// @resource  jqueryUICSS https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css //OK

文学:

相关 StackOverflow 问题:

于 2011-10-15T23:12:03.297 回答