저는 처음으로 Firefox 확장 개발에 착수했습니다. 지금까지 꽤 편안하게 진행되었지만 문제가 있습니다. 내장 된 nsIPromptService를 덮어 쓰고 대신 내 자신의 것으로 대체해야 할 일 중 하나입니다.Firefox addon에 내장 된 XPCOM 구성 요소를 덮어 쓰는 방법은 무엇입니까?
내가 여기에 기본 XPCOM 컴포넌트 생성 자습서를 걸어와 인사의 세계를 하나의 작업을 가지고:
https://developer.mozilla.org/en/creating_xpcom_components
그리고 그 모든 것을 잘 작동하는 것 같다,하지만 아무것도 내가 찾을 수있었습니다 또는 연구는 어떻게 자바 스크립트에서 인터페이스를 덮어 쓸 수 있는지 보여줍니다. C++과 Java에서 기본 제공 구성 요소를 덮어 쓸 수있는 것 같은 것을 보았지만 javascript에서이 작업을 수행 할 수는 없으며 계약 ID를 변경하려고하면 작동하지 않습니다. 계약 ID (아래)에서 서비스를 가져 오려고하면 원래의 기본 제공 구성 요소 버전 만 반환됩니다.
var myComponent = Components.classes['@mozilla.org/embedcomp/prompt-service;1']
.getService(Components.interfaces.nsIPromptService);
정말 실종 된 것이 있습니까? 이것은 구성 요소를 무시하는 잘못된 방법입니다 (아무 것도 찾을 수없는 것 같아서 무엇을해야하는지 잘 모르겠습니다).
이 작업을 직접 해보지는 않았지만 * 귀하의 * 서비스의 계약 ID를 전달한 다음 getService()에 동일한 인터페이스를 전달하는 것이 중요하다고 생각합니다. 그 외에는, 최선의 방법은 당신이하려는 것을 수행하는 기존의 addons을 보는 것입니다. 나는 HttpFox가 이런 종류의 것을 사용한다고 믿는다. – MatrixFrog
제안에 감사드립니다! 그 문제는 내가 계속 진행하는 모든 프롬프트/경고/etc에 연결해야한다는 것, 그리고 내가 스스로 부르는 것뿐만 아니라, 모든 사람들이 근본적으로 내 서비스 주소로 전화해야한다는 것을 의미한다. '). HttpFox에서 내가하는 일을 볼 수 있는지 살펴 보겠습니다. – DivineWolfwood