我們的應用程序使用嵌入式xulrunner。我們通過在更新的XULRunner中重寫PromptService
componentRegistrar.RegisterFactory (PROMPTSERVICE_CID, aClassName, aContractID, MyPromptServiceFactory);
其中,覆蓋默認PromptService提供警報,提示等自定義對話框
PROMPTSERVICE_CID is "a2112d6a-0e28-421f-b46a-25c0b308cbd0"
CONTRACT_ID is "@mozilla.org/embedcomp/prompt-service;1"
當使用XULRunner的1.9。*的版本,這個完美的作品和呼叫來MyPromptSerivceFactory
。但是,這在更新的XULRunner版本上不適用(> = 4.0)
我已將PROMPTSERVICE_CID
更改爲"7ad1b327-6dfa-46ec-9234-f2a620ea7e00"
(複製自nsPrompter.manifest
)。在註冊工廠時,我收到錯誤NS_ERROR_FACTORY_EXISTS
。
如果我繼續使用舊的PROMPTSERVICE_CID
,則不使用nsIPromptService2
代替nsIWindowCreator2.CreateChromeWindow2
用於顯示警報和提示。
我已經使用了這個,但我找不到解決方案或者修復NS_ERROR_FACTORY_EXISTS
錯誤或MyPromptServiceFactory
被使用。
任何幫助/建議嗎?
非常感謝!使用@ mozilla.org/prompter; 1作爲合同ID,我可以解決這個問題。如何讓我自己的CID在RegisterFactory中使用? – lakshmip
@lakshmip:只需生成一些UUID。例如。使用http://www.famkruithof.net/uuid/uuidgen –
對不起,這個真的很老的線程necro'ing,但有沒有任何參考準確地如何做到這一點與xulrunner? Google-fu給我的任何東西似乎都無法正常工作...... – Kyudos