我第一次嘗試了Firefox擴展開發,到目前爲止它一直很順利,但我遇到了一個問題;我需要做的事情之一是覆蓋內置的nsIPromptService並將其替換爲我自己的東西。如何覆蓋Firefox插件中內置的XPCOM組件?
我通過基本XPCOM組件創建教程走到這裏,並得到了世界你好一個工作:
https://developer.mozilla.org/en/creating_xpcom_components
,一切都在這看似很正常,但沒有什麼我已經能夠找到或研究顯示我可以如何覆蓋JavaScript的界面。我已經看到了C++和Java中似乎能夠覆蓋內置組件的東西,但是我無法找到任何有關從javascript執行此操作的內容,只是試圖更改合同ID不起作用;當我嘗試從合同ID獲得服務時(如下所示),它只是返回原始的內置組件版本。
var myComponent = Components.classes['@mozilla.org/embedcomp/prompt-service;1']
.getService(Components.interfaces.nsIPromptService);
這裏有什麼東西真的很明顯,我失蹤了嗎?這是錯誤的方式去重寫組件(我似乎無法找到任何地方,所以我不知道我應該做什麼..)。
我自己並沒有這樣做,但我認爲訣竅是傳入* your *服務的合同ID,然後將相同的接口傳遞給getService()。除此之外,我認爲你最好的選擇就是看看現有的插件是否可以做你想做的事。我相信HttpFox使用這種東西,僅舉一例。 – MatrixFrog 2011-04-06 02:24:26
感謝您的建議!問題在於,我需要連接所有的提示/警報/等等,而不僅僅是我自己打電話給我的那些人,這意味着每個人都必須打電話給我的服務地址(贏得了沒有發生)。我會看看HttpFox,看看我能看到他們做了什麼。 – DivineWolfwood 2011-04-06 17:59:26