2014-06-23 58 views
2

我需要一些關於firefox插件的幫助。我有一個函數從頁面獲取一些值並使用它們來填充新的窗口文本區域。firefox上的window.onload 30

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") 
    }); 
    } 
}); 

它可以完美的暫存器並在火狐29的插件而在最新的Firefox 30的smsWin.onload功能部件沒有按」 t似乎正在工作(即使我把警報('1')裏面),而窗口仍然打開。任何想法如何解決它?

UPD。 也試過這個

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

而且它在一個插件不工作,以及(但它只是對暫存器和FF29)。更改loadDOMContentLoaded cnahges什麼

回答

1

好的,我已經做了一些解決方法。看起來像window.onload部分不工作在FF30安全更新的原因。但是,如果窗口是一個iframe,它可以很好地工作。所以我只是用var smsWin = document.createElement('iframe');等修改需要的頁面,突然smsWin.onload = function() {...}工作得很好。

1

從暫存器成功運作的原因是因爲你在「環境」>「內容」

的模式下運行的代碼window.open("http://mysite.net/", "New window", "height=250");如果將「環境」到「瀏覽器」在便籤本中,你會看到它不起作用。

你不能從插件代碼中做window.open。如果你想打開一個窗口,你必須使用Services.wwhttps://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,並讓我知道它是如何工作的。

+0

感謝您的答案,會嘗試。插件中最可疑的部分在FireFox 29中工作,但我發現在版本號爲 – bigbobr

+0

的更新日誌中沒有任何關聯。不幸的是,它是相同的 - 在FF29和ScratchPad中工作,但不在FF30中。我仍然無法找到更新日誌中的任何內容。 – bigbobr