我只想使用PHP(通過本地AMPPS服務器)來生成我所有的XUL。看來XULrunner將不允許加載「遠程」URL(即http://mylocaldomain.com
)。XULrunner加載遠程XUL的權限
我已經做了相當多的搜索,看到的回覆看起來像一個答案,但他們是含糊或相當老,我無法讓他們工作。我認爲這是一個相關的答案是使用nsIPermissionManager,有在https://developer.mozilla.org/en-US/docs/Using_Remote_XUL一個例子,但我無法得到它的工作
Components.classes["@mozilla.org/permissionmanager;1"]
.getService(Components.interfaces.nsIPermissionManager)
.add('http://www.mylocaldomain.com/', 'allowXULXBL', Components.interfaces.nsIPermissionManager.ALLOW_ACTION);
我已經試過在年初的pref.js
加載它,以及我的main.js
並且都不起作用。如果我把它放在我的main.js
文件中的XULrunner錯誤控制檯給這個錯誤
Error: NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIPermissionManager.add]
,如果我在Firefox中運行它,我得到這個錯誤
TypeError: Components.classes is undefined
我也發現了這個帖子在這裏,Is it possible to reference remote content from chrome.manifest? (XULRunner)這基本上看起來要你把application.ini
和defaults\preferences\prefs.js
放在你的服務器上並從那裏運行它們。所以如果我運行我的應用程序"...\xulrunner.exe" -app http://www.mylocaldomain.com/application.ini -jsconsole
XULrunner只是說它不能解析application.ini
。
因此,如何在XULrunner中設置一個允許使用遠程URL的問題?
編輯:第2輪(以及更喜歡圓50,但誰的票)
令人吃驚的是,有沒有遠程XUL一個教程。我在整本關於遠程XUL的書中買了一本書Introductory XUL。是的,我可以買一本不同的書,但隨着年齡的增長,名單上的下一個是從2007年開始,在Mozilla將XULrunner肢解之前。
雖然有一個附加組件Remote XUL Manager,但本書的想法失敗了。讓我們解剖一下。在其近1000行代碼中,看起來需要2行來設置遠程URL的權限。
在permissions.js在線路97你有
Services.perms.add(uri, ALLOW_REMOTE_XUL, ALLOW);
和線路143你有
Services.io.newURI(aDomainString, null, null);
放在一起,變量替換你
var uri = Services.io.newURI('http://www.mylocaldomain.com', null, null);
Services.perms.add(uri, "allowXULXBL", 1);
要運行它,它看起來就像你需要在它之前加上這個一樣
Components.utils.import("resource://gre/modules/Services.jsm");
但在運行中的XULrunner我得到這個錯誤
TypeError: Components.utils is undefined
以前一樣。所以有點谷歌搜索,我發現我需要這個
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
,所以我把它添加到我的代碼的頂部,並得到這個錯誤
TypeError: netscape.security.PrivilegeManager is undefined
如果你谷歌xulrunner "netscape.security.PrivilegeManager is undefined"
你得到4次的結果(與這篇文章,我想它現在將是5)。幸運的是,如果刪除xulrunner
,您會得到更多結果,並且看起來netscape.security.PrivilegeManager
已過時(obsolete reference)。
在我的其中一個搜索xulrunner "Components.utils is undefined"
(又4個結果)在SO上發佈了一個帖子,Firefox Add-on SDK and js-ctypes。在此基礎上我想這
const {Cu} = require('chrome');
Cu.import("resource://gre/modules/Services.jsm");
var uri = Services.io.newURI('http://www.mylocaldomain.com', null, null);
Services.perms.add(uri, "allowXULXBL", 1);
其中給出這個錯誤
ReferenceError: require is not defined
我看來,這樣做是可能的,因爲是一個附加上這樣做,看起來像它只是一對夫婦的線,但這些線似乎是一個更密切保護核啓動代碼的祕密。
因此,回到尋找每一隻最後的小兔子蹤跡,發現更多的死衚衕,至少直到有人願意泄漏豆類。