javascript - 无法在 Firefox 插件中向面板发送消息? (该页面目前处于隐藏状态,在再次可见之前无法再使用)

标签 javascript firefox firefox-addon firefox-addon-sdk

我的目标很简单:我想要一个面板,用户可以在其中指定用户名和密码并单击登录。然后我想做一个网络请求来验证凭据,并向用户显示响应。

我发现我必须在 main.js 中执行请求并将其传回。 因此,当提交表单时,我构建了我的 url,向我执行请求的 main.js 发送了一条消息。效果很好,响应也正确。 但是,当我想将响应发送回面板时,出现此错误:

Error: The page is currently hidden and can no longer be used until it is visible again.
resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/content/worker.js 404
Traceback (most recent call last):
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/net/xhr.js", line 126, in 
    self._orsc.apply(self, arguments);
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/request.js", line 91, in onreadystatechange
    emit(target, 'complete', response);
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/event/core.js", line 83, in emit
    for each (let item in emit.lazy.apply(emit.lazy, arguments)) {
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/event/core.js", line 101, in lazy
    yield listeners.shift().apply(target, args);
  File "resource://jid1-aaautmtqen7pta-at-jetpack/domain/lib/main.js", line 21, in hosters<.onComplete
    popup.port.emit("handleloginresponse",response);
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/content/worker.js", line 369, in 
    emit: function () self._emitEventToContent(Array.slice(arguments))
  File "resource://jid1-aaautmtqen7pta-at-jetpack/addon-sdk/lib/sdk/content/worker.js", line 404, in _emitEventToContent
    throw new Error(ERR_FROZEN);

我还尝试再次打开面板或改用 postMessage()。似乎没有任何效果,我无法将内容传输回我的面板!任何帮助都适用!

这是我的 main.js

var data = require("self").data;

var popup = require("panel").Panel({
  width: 212,
  height: 200,
  contentURL: data.url("popup.html"),
  contentScriptFile: [data.url("jquery.js"),data.url("popup.js")]
});

var Request = require("request").Request;

popup.port.on("handlelogin", function (url) {
    console.log("requesting " + url);
    var hosters = Request({
        url: url,
        onComplete: function (response) {       
            console.log(response.status);
            console.log("emmiting handleloginresponse");
            popup.port.emit("handleloginresponse",response);
        }
    }).get();
}); 

require("widget").Widget({
  label: "my label",
  id: "pop-up",
    contentURL: data.url("16.png"),
  panel: popup
});

弹出窗口

<html>

<head>

</head>

<body>
    <form id="loginform">
        <input name="user" placeholder="User" id="userfield" />
        <input type="password" name="pass" placeholder="Password" id="passfield"/>
        <input type="submit" id="loginbutton" value="Log in " />
    </form>
</body>

</html>

弹出窗口

$('#loginform').submit(function (event) {
    var url = 'https://mydomain.com?user=' + encodeURIComponent($('#loginform')[0].user.value) + '&pass=' + encodeURIComponent($('#loginform')[0].pass.value) + '&something=something;
    self.port.emit("handlelogin",url);

});

self.on("handleloginresponse", function(data) {
    console.log("got a handleloginresponse!");
    console.log(data);
});

最佳答案

问题自行解决为不存在,是由于服务器端 http 错误引起的

关于javascript - 无法在 Firefox 插件中向面板发送消息? (该页面目前处于隐藏状态,在再次可见之前无法再使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15392651/

相关文章:

javascript - Crossrider setPopup() 小宽度

FF5 扩展/插件中的 JQuery 跨域 JSONP,未定义回调

javascript - 日期过滤器没有给出 angularJs 中确切使用 12 小时格式的信息

javascript - 箭头键在 Firefox 中无法使用给定的 javascript 工作

javascript - api请求后,数组在控制台中被拆分为多个数组

javascript - jQuery event.preventDefault() 在 Firefox 中不起作用(包括 JSFiddle)

javascript - 尝试从 mobilefirst 应用程序中的 SQL 数据库获取数据时出错

javascript - 在 javascript 中,如何检查文本区域是否只有一行文本?

javascript - 更改按钮的文本以及 jquery 中的 fadetoggle 函数

linux - 将 Mozilla (FireBreath) 插件打包到 FireFox 的 .xpi 中?