Вам необходимо зарегистрировать свой компонент, используя идентификатор контракта службы, которую вы хотите переопределить.

рвые участвую в разработке расширений Firefox, и до сих пор это было довольно удобно, но я столкнулся с проблемой; одна из вещей, которые мне нужно сделать, переписать встроенный nsIPromptService и заменить его чем-то своим.

Я прошел здесь базовый урок по созданию компонентов XPCOM и начал работать над hello world one:

https://developer.mozilla.org/en/creating_xpcom_components

И все в этом, кажется, работает нормально, но ничего, что я не смог найти, или исследование показывает, как я могу переписать интерфейс из JavaScript. Я видел вещи в C ++ и Java, которые, кажется, могут перезаписывать встроенные компоненты, но я ничего не могу найти в этом, используя javascript, и просто попытка изменить идентификатор контракта не сработала; когда я пытаюсь получить сервис из идентификатора контракта (как показано ниже), он просто возвращает исходную версию встроенного компонента.

var myComponent = Components.classes['@mozilla.org/embedcomp/prompt-service;1']
                                               .getService(Components.interfaces.nsIPromptService);

Есть ли здесь что-то действительно очевидное, чего мне не хватает? Является ли это неправильным способом переопределения компонентов (кажется, я нигде не могу найти ничего, поэтому я не совсем уверен, что мне следует делать ...).

Ответы на вопрос(2)

Ваш ответ на вопрос