2015-05-10 14 views
1

我有一個小插件,打開一個帶有外部內容的對話窗口。 我還沒有找到一種方法將數據傳遞給子窗口,讓它知道它是一個對話窗口。 我需要這樣做,以便加載到對話框窗口的JavaScript代碼知道它必須關閉。來自Firefox插件的OpenDialog與外部內容無法訪問窗口參數或回到歷史中

有沒有其他的方法來實現這一目標?

history.back()不適用於加載到所述窗口的文檔,但我不知道爲什麼。

var MACDialogExtension = { 
myListener: function(evt) { 
console.log(evt.target.ownerDocument); 

window.openDialog(evt.target.getAttribute("url"),evt.target.getAttribute("name"),evt.target.getAttribute("features"),"child"); 
    }  
} 
document.addEventListener("MACDialogExtensionEvent", function(e) { MACDialogExtension.myListener(e); }, false, true); 

我認爲加載到對話框中的文檔會訪問窗口argumens,但它不會。 你能想到其他的方式來傳遞參數到窗口中嗎?我只需要該窗口內的文檔,它們位於對話窗口內。

+0

對我來說,並不是'window.arguments'不起作用,而是它只適用於基元!我可以傳遞數字,布爾值和字符串,但是如果我傳遞一個對象,對話框將獲得一個空對象,並且所有的字段都被剝離了!我甚至試過這個[wrappedJSObject](https://developer.mozilla.org/en-US/docs/wrappedJSObject)伎倆,但徒勞無功。 –

回答

0

火狐對話框有一個對話的全局對象,雖然我不知道是否會從外部內容窗口中工作,可能爲你工作:

Dialog.args 

所以你說window.arguments [0]不起作用?

如果加載不同的(例如更簡單的)外部文檔會怎麼樣?

我想你需要提供更多的代碼,如果這些都沒有幫助。

+0

我得到'ReferenceError:Dialog is not defined'。對我來說,並不是'window.arguments'不起作用,但它只適用於基元!我可以傳遞數字,布爾值和字符串,但是如果我傳遞一個對象,對話框將獲得一個空對象,並且所有的字段都被剝離了!我甚至試過這個[wrappedJSObject](https://developer.mozilla.org/en-US/docs/wrappedJSObject)伎倆,但徒勞無功。這個API非常脆弱。即使MDN的例子也不適合我。 –

相關問題