browser - 如何从 XUL 浏览器打开新窗口?

标签 browser xul xulrunner

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

我找到了this page关于这个主题,但提供的解决方案没有表现出不同的行为。

对此有任何提示吗?

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

最佳答案

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

>>> netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
Error: A script from "http://stackoverflow.com" was denied UniversalXPConnect UniversalBrowserWrite privileges.

您尝试使用代码库安全主体并看看这是否会产生影响怎么样? (http://www.mozilla.org/projects/security/components/signed-scripts.html#codebase)。对于我来说,Firebug 确实允许我在使用一个又大又难看的对话框确定后获得额外的权限,但仍然不允许我使用 window.open 打开 Chrome URL。下一步可能是尝试更改您的 conf 文件以使用 contentaccessible,以便可以访问内容的相关部分(请参阅 https://developer.mozilla.org/en/Chrome_Registration#contentaccessible )。

为了避免在提升权限时出现讨厌的消息,您可以尝试自动为正确的文件设置权限,如 http://forums.mozillazine.org/viewtopic.php?f=38&t=1769555 中所述。 .

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

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

关于browser - 如何从 XUL 浏览器打开新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284954/

相关文章:

javascript - 使用 XUL 和 JS 将插件写入 Firefox

javascript - 交叉表弹出窗口

Javascript - 我可以拦截对 document.location.href 的调用吗?

Javascript 对象成员访问

javascript - 如何在 xul 中创建自己的后退/前进按钮?

xul - Direct3D 应用程序搞砸了 XULRunner

xul - 开始使用 XULRunner 进行 XUL 和 XPCOM 开发?

javascript - 在 JavaScript 中阻止调用

javascript - 自上次用户在 Firefox 中事件以来的时间

firefox - 我的 Firefox 扩展中可以有一个没有阴影的 XUL 面板吗?