【问题标题】:jQuery.hoverIntent.js in Firefox extension does not loadFirefox 扩展中的 jQuery.hoverIntent.js 无法加载
【发布时间】:2012-03-30 12:21:21
【问题描述】:

根据this指南 我试图将 JQuery 加载到我的 Firefox 扩展中。

var Myext = {

  loadJQuery: function(wnd) {
      var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
        .getService(Components.interfaces.mozIJSSubScriptLoader);
      loader.loadSubScript("chrome://myext/content/jquery-1.7.2.min.js", wnd);
      var jQuery = wnd.jQuery.noConflict(true);
      try {
        loader.loadSubScript("chrome://myext/content/jquery.hoverIntent.js", jQuery);
      catch (Except) {
        alert(Except.toString());
      }
      return jQuery;
  },

  onLoad: function(e) {
    Myext.jQuery = Myext.loadJQuery(window);
  },

  showDialog: function(e) {
    var $ = Myext.jQuery;
    /* JQuery code */
  }

}

window.addEventListener("load", function(e) { Myext.onLoad(e); }, false);
window.addEventListener("DOMContentLoaded", function(e) { Myext.showDialog(e); }, false);

加载器在加载jquery.hoverIntent.js 时出现问题。我下载了here

错误信息:"Type Error: $ is undefined"

【问题讨论】:

  • jQuery.noConflict(); var doc = window.content.document; alert(jQuery("body", doc).html());

标签: jquery firefox-addon hoverintent


【解决方案1】:

为了使用.dialog(),您还需要包含jQuery UI 库。在加载 jQuery 库后立即输入下一行:

loader.loadSubScript("chrome://myext/content/jquery-ui-1.8.18.custom.min.js", wnd);

您可以从here 下载的最后一个 jQuery UI 库。

【讨论】:

  • 我已经完成了,但仍然看不到对话框。我只将文件jquery-ui-1.8.18.custom.min.js 复制到myext/content 目录。
  • JQuery 似乎没有任何作用。当我用$("a").click(function() { alert("Hello world!"); }); 替换对话框功能时,单击链接时看不到消息。
  • 你在哪里有<div id="#dialog">text</div>?它应该是选项卡中 html 页面的 DOM 的一部分。此外,您可能需要添加 smth.比如$("#dialog", gBrowser.contentDocument).dialog() ...还要检查错误控制台(Ctrl+Shift+J),并且不要忘记在每次更改后重新启动 Firefox。
  • 我用对话框删除了代码,只尝试了我之前评论中的代码。我可以在没有#dialog id 的元素的情况下打开对话框吗?我想在活动中打开它。
  • 对我来说一切正常,请查看this question。可能,您对 jQuery UI 也有同样的问题
【解决方案2】:

这一行:

onLoad: function(e) {
    Myext.jQuery = Myext.loadJQuery(window);
  },

不应该吗?

onLoad: function(e) {
    Myext.jQuery = loadJQuery(window);
  },

【讨论】:

  • 我试过但没有帮助。我认为,您应该参考命名空间。
猜你喜欢
  • 2015-10-25
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 2015-04-09
相关资源
最近更新 更多