Browser 如何打开新窗口&x27;是从XUL浏览器吗?

Browser 如何打开新窗口&x27;是从XUL浏览器吗?,browser,xul,xulrunner,Browser,Xul,Xulrunner,我想知道,是否有可能处理Xul浏览器组件打开新窗口的请求?我尝试更改window.open函数,但似乎从未调用过。 在新窗口中打开的所有链接都不会在我的应用程序中打开 我在这个问题上找到了答案,但提供的解决方案没有表现出任何不同的行为 有什么提示吗 (顺便说一下,我正在开发一个独立的应用程序,而不是Firefox的扩展)普通的js不工作吗 window.open(url,windowname,flags); 我假设您在一个XULRunner应用程序中,并且您正试图从浏览器中的非chrome源(

我想知道,是否有可能处理Xul浏览器组件打开新窗口的请求?我尝试更改window.open函数,但似乎从未调用过。 在新窗口中打开的所有链接都不会在我的应用程序中打开

我在这个问题上找到了答案,但提供的解决方案没有表现出任何不同的行为

有什么提示吗


(顺便说一下,我正在开发一个独立的应用程序,而不是Firefox的扩展)

普通的js不工作吗

window.open(url,windowname,flags);

我假设您在一个XULRunner应用程序中,并且您正试图从浏览器中的非chrome源(例如HTTP或本地文件)加载chrome URL。虽然启用UniversalXPConnect和UniversalBrowserWrite可能会有所帮助,但它们也存在安全风险(因为web上的任意脚本都可能使用它们),因此它们往往在浏览器中被禁用(例如,在Firebug中运行该行会给您一个例外):

您是否可以尝试使用代码库安全性主体,看看这是否会有所不同?(http://www.mozilla.org/projects/security/components/signed-scripts.html#codebase). 对于Firebug中的我来说,它确实允许我在我通过一个大的、看起来很讨厌的对话框确认后获得额外的权限),但仍然不允许我用window.open打开Chrome URL。下一步可能是尝试将conf文件更改为使用contentaccessible,以便可以访问内容的相关部分(请参阅)

为了避免提升权限时出现令人讨厌的消息,您可以尝试自动设置正确文件的权限,如中所述

此外,请确保检查浏览器类型(https://developer.mozilla.org/en/XUL/Attribute/browser.type). 如果浏览器类型不是chrome,那么可能值得尝试将其改为chrome,看看这是否会有所不同


如果我的任何假设是错误的,回到我身边,我会尝试其他方法。

我知道两种方法

第一个是将
browser.chromeURL
首选项设置为包含
的chromeURL。内容窗口试图打开的页面将加载到给定的浏览器中


第二个是使用定义的对象设置属性
window.browserDOMWindow
,该对象用于实现
nsIBrowserDOMWindow
接口。如果您使用的是选项卡式界面,这允许您将打开的调用转移到选项卡中。注意:必须将选项卡式浏览首选项设置为允许将窗口转移到选项卡中,否则XULrunner将返回到
浏览器。chromeURL

是(注释中的字符数最少为15,你不讨厌吗?)。此外,我已尝试将我的函数属性设置为window.open,以便查看是否调用了它,但事实并非如此。要了解更多关于浏览器类型的信息,我发现这说明了我可以设置一个窗口来处理新窗口的首选项。谢谢
>>> netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
Error: A script from "http://stackoverflow.com" was denied UniversalXPConnect UniversalBrowserWrite privileges.