2011-10-13 22 views
1

我看到enablePrivilege在Firefox中不推荐使用。我正在尝试使我的Intranet代码库适应这一点。如何在没有enablePrivilege的情况下将视图对象分配给XUL树小部件

最关键的地方是分配'树'元素的'视图'。这需要提高priv,虽然我真的不明白为什么。有没有另外一种方式来做到这一点,不需要提升特权?在enablePrivilege消失之前是否会提供这种方法?

该应用程序不是扩展,而是作为内容运行的签名JAR文件。

+1

自定义树视图是安全漏洞的来源,这就是为什么设置'tree.view'需要扩展特权从Gecko 1.8开始我认为。后来,所有远程XUL都发生了同样的情况。一般来说,我不认为Mozilla希望继续使用提升的特权来支持Web应用程序,但它始终是一个麻烦来源。鉴于您已经不得不改变使用远程XUL的偏好,您也可以安装一个扩展来支持您的Web应用程序。 –

回答

2

翻阅bug 546848,Mozilla不打算允许具有更高权限的网站。此功能会带来不值得的安全风险(类似于一般的远程XUL)。建议的解决方案将使用Firefox扩展来执行可能需要的任何特殊操作。理想情况下,您需要将整个Web应用程序用户界面移到一个扩展中,并且只将服务器作为后端。但我想这个解决方案需要你付出太多的努力。更简单的解决方案是从您的网站接收消息并设置树视图的单用途扩展。

Interaction between privileged and non-privileged pages描述了如何实现这种通信。您的网站将在<tree>元素上设置一个属性_myTreeView并在其上发送事件。该扩展将收到事件,验证event.target.ownerDocument.defaultView.location.host是您的内部网网站(重要的是,允许任何网站触发您的扩展将是一个安全漏洞),然后设置event.target.view = event.target.wrappedJSObject._myTreeView。关于为什么wrappedJSObject在这里是必要的,请参阅XPCNativeWrapper documentation

+0

我一直在试图让一些东西工作一段时间。上面引用的文档似乎说浏览器代码不允许访问内容数据,然后对象封装机制只是为了强制执行。有没有一个代码的工作示例,代表内容在扩展中指定树视图。这似乎是唯一需要在浏览器和内容代码之间进行密切互动的地方,而我所看到的建议似乎并不奏效。 – nicktook

+0

@nicktook:这就是为什么你会使用'wrappedJSObject'属性来直接访问内容数据... –

相关问题