2009-10-22 75 views
1

我正在開發一個Firefox擴展,在網頁的客戶端我添加一個鏈接,並點擊鏈接,我打算打開一個窗口,它將允許用戶輸入文本。當我點擊鏈接時,它會打開窗口,但它不會讓我寫信給它。從Firefox的現有頁面打開一個窗口給我安全錯誤

例如 ww.document.write('<div id = "textDiv">') ; 這給我一個錯誤:

Error: uncaught exception: [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "chrome://googbar/content/googbar.js Line: 272"]

,我使用下面的打開窗口:

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

calWindow = ww.openWindow(null,'calendarWindow',null, 'left =500, top = 190, width = 230, height = 220,titlebar = no', null); 

在打開的窗口沒有一個空的窗口,它包含的內容父窗口。例如,我從維基百科打開此窗口,打開的新窗口包含維基頁面。 任何人都可以幫助我嗎?

回答

0

我不完全清楚是什麼導致了這一點,但MDC上的這些twopages表明,這可能已經受到Firefox 3.0的變化影響,以收緊一些安全問題。

雖然不是一個完整的答案,但這可能會讓你走上解決問題的正確軌道。如果沒有,給我們一些關於你想要做什麼的更多細節。

+0

與我的擴展我試着添加一個鏈接,點擊打開一個窗口,在這個窗口中,用戶可以輸入將保存在SQLite中的文本。所以它就像允許用戶在網頁上註釋一樣。 – fftoolbar 2009-10-22 07:32:11

+0

我甚至嘗試過window.open,我認爲它做同樣的事情,但它給了我同樣的錯誤。我正在討論的這個鏈接被添加到客戶端的網頁上(而不是工具欄)。 – fftoolbar 2009-10-22 07:34:56

0

1)nsIWindowWatcher.openWindow的第二個參數是URL。 'calendarWindow'不是。 A google result from mozillazine建議通過''神奇地使document.write工作,我沒有檢查。

2)我會嘗試設置document.body.innerHTML而不是使用document.write()。我認爲document.write()是一個糟糕的API,應該只是爲了兼容性而繼續存在。

3)無論如何,在你的情況下,我不明白爲什麼你需要打開一個完整的瀏覽器窗口只是爲了放一些簡單的HTML。創建一個XUL對話框,將其放入您的擴展中並打開它(使用window.open('chrome://....', '', 'chrome'))。打開也快得多。

+0

感謝Nick提供的建議。最後一個對我來說是奇蹟。再次感謝。 – fftoolbar 2009-10-24 14:27:58

相關問題