firefox-addon - Firefox 30 上的 window.onload

标签 firefox-addon onload firefox-addon-sdk addeventlistener

我需要一些有关 Firefox 插件的帮助。我有一个函数可以从页面获取一些值并使用它们来填充新的窗口文本区域。

var ticket = document.getElementsByName('ticket_id');
var addr = document.getElementsByName('address_id');
var text = "Your address is "+addr[0].value+", ticket number is "+ticket+",";
smsWin = window.open("http://mysite.net/", "New window", "height=250");

smsWin.onload = function () {
  smsWin.document.getElementById('textsms').innerHTML = text;
};

该函数由 Firefox 中的操作按钮调用

var button1 = require("sdk/ui/button/action").ActionButton({
  id: "style-tab1",
  label: "Do magic",
  icon: "./icon-64.png",
  onClick: function() {
    require("sdk/tabs").activeTab.attach({
      contentScriptFile: self.data.url("close.js")
    });
  }
});

它在 ScratchPad 和 Firefox 29 的插件中完美运行。但是在最新的 Firefox 30 中,smsWin.onload 函数部分似乎不起作用(即使我将alert('1') 放在里面),而窗口仍然打开。关于如何修复它有什么想法吗?

UPD。 也尝试过这个

smsWin.addEventListener("load", function() {
  smsWin.document.getElementById('textsms').value = text;
}, false);

它也不适用于插件(但适用于 ScratchPad 和 FF29)。将 load 更改为 DOMContentLoaded cnahges 没有任何结果

最佳答案

它从暂存器工作的原因是因为您正在运行代码window.open("http://mysite.net/", "New window", "height=250"); 模式为“环境”>“内容”

如果您在便签本中将“环境”设置为“浏览器”,那么您会发现它不起作用。

您无法从插件代码执行 window.open 。如果你想打开一个窗口,你必须使用Services.ww:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowWatcher

查看如何打开具有以下功能的窗口: http://forums.mozillazine.org/viewtopic.php?f=19&t=428535&p=2321231&hilit=openWindow#p2321231

  var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                 .getService(Components.interfaces.nsIWindowWatcher)

  ww.openWindow(null, "chrome://browser/content/browser.xul", "_blank",
       "chrome,all,dialog=no", "http://www.gemme.pl/");


好吧,我看到你正在做 add-sdk 并且窗口打开不是问题,而是窗口加载。尝试使用DOMContentLoaded

虽然 sdk 让我很困惑。因为当窗口打开时,窗口上触发的加载是当xul完成加载时。然后您就可以加载页面了。但请尝试使用 DOMContentLoaded 代替 load,并让我知道它是如何工作的。

关于firefox-addon - Firefox 30 上的 window.onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24359592/

相关文章:

javascript - 自动选择加入 cookie 的浏览器插件 - 欧盟 cookie 法

javascript - 当window对象不可用时可以使用createElement吗?

javascript - 所有 window.onload 脚本完成后运行 JavaScript 吗?

firefox-addon - 是否可以在 Firefox 附加组件中使用第三方 js 库,例如下划线?

firefox-addon - 在 xulrunner 中运行 Firefox 扩展

post - Firefox 插件可刷新点击并自动重新发送数据

iframe - 如何在我的扩展程序中使用iframe嵌入YouTube channel 页面?

javascript - 如何取消http请求?

javascript - 即使检查 onload 事件 javascript,iframe 内容也不会出现在屏幕上

jquery - 如何获取 iframe 响应 http 代码 onload?