2009-10-22 76 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

相关问题