【问题标题】:Can i use addon code in jquery content script file (Firefox addon sdk)? if yes how?我可以在 jquery 内容脚本文件(Firefox 插件 sdk)中使用插件代码吗?如果是的话怎么办?
【发布时间】:2015-07-30 09:37:00
【问题描述】:

我最近开始学习 addon-sdk 插件开发,现在遇到了一个问题。在这个插件中,我现在使用了切换按钮和面板。在面板中,我加载了一个 "myform.html" 的 html 文件。当我填写表单,即在面板中加载并单击提交按钮时,ajax 请求将发布数据发送到服务器并返回响应。 ajax 代码位于名为 "script.js" 的 jquery 文件中。现在,在收到响应后,我想访问当前的标签页组件(例如表单、输入类型文本等)。 当我在 ajax 成功函数中使用 chrome 对象(如 self、panel 等)时,它给了我错误。我搜索了很多以摆脱这个错误,但没有发现对我有用。所以告诉我,如果我走错了方向,或者我错过了什么。

我正在做这样的事情(script.js)

$(document).ready(function(e) {
     $('#form').on('submit',function(login){
           $.ajax({
                .....
                .....
                success:function(result){
                     self.port.emit(...);
                }
           });
     });
});

【问题讨论】:

    标签: jquery html ajax firefox-addon firefox-addon-sdk


    【解决方案1】:

    您可以使用 Panel() 构造函数的 contentScript 或 contentScriptFile 选项指定一个或多个内容脚本以加载到面板中。

    您应该确保 jQuery 包含在您的内容脚本中。

    var self = require("sdk/self");
    
    var panel = require("sdk/panel").Panel({
      contentURL: "https://en.wikipedia.org/w/index.php?title=Jetpack&useformat=mobile",
      contentScriptFile: [
        self.data.url("jquery.js"),
        self.data.url("script.js"),
      ]
      contentScriptWhen: 'ready',
    
    });
    
    panel.port.on('ajaxComplete', function (){
      console.log('completed!');
    });
    
    panel.show();
    

    在您的script.js 中,您不需要像contentScriptWhen ready 那样监听ready 事件。

     // script.js
     $('#form').on('submit',function(login){
           $.ajax({
                ...
                ...
                success:function(result){
                     self.port.emit('ajaxComplete');
                }
           });
     });
    

    祝你的项目好运

    【讨论】:

    • 抱歉回复迟了。我几乎对这个问题失去了希望,因为到目前为止没有人给我任何解决方案。但我很高兴收到您的来信。谢谢你的祝福。我会尝试你的解决方案并告诉你它是否有效。
    • 不是“contentScriptFile:”而不是“contentStyleFile:”
    • 错误是“ReferenceError: $ is not defined”
    • halfcube 正如我所说我在脚本文件中使用 jquery,它给了我上面评论的错误。
    • @MannVerma 您找到解决方案了吗?我有同样的问题,在 Windows 上使用 jQuery 会导致 $ is not defined 错误。然而,我的代码在 OSX 上工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2018-12-03
    相关资源
    最近更新 更多