我想知道,是否可以处理 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/