How to check if Firefox extension code is running in privileged mode?
我在 Firefox 扩展程序和页面内容之间进行了一些事件调度/侦听。
页面内容代码被注入到扩展的 on-content-page-load 处理程序中。
有没有办法检查当前代码运行的模式是什么(特权模式或非特权模式)?
典型的方法是检查你是否可以访问
1 2 3 4 5 6 7 | try { Components.classes; alert("Yay! Privileged code."); } catch (e) { alert("Oops... Content privileges only."); } |
取决于环境:
在 addon-sdk 插件中,您可以检查
1 2 3 | if(typeof(require)!=="undefined" && typeof(exports)!=="undefined"){ //privileged } |
(注意:typeof 用于在检查变量是否存在时防止错误。)
按照 Wladimir 的建议检查
甚至检查 xul:window 元素是否存在:
1 2 3 4 | var xulWindow=document.querySelector("window#main-window[windowtype='navigator:browser']"); if(xulWindow){ //privileged. in this case looking specifically for"navigator:browser" windowtype. } |