웹 페이지에서 javascript 개체로 공개되는 XPCOM 구성 요소를 작성하고 싶습니다. Google Gears와 같은 것이 제가 찾고있는 것입니다. 즉, Google Gears Firefox 확장 프로그램을 설치 한 후 자바 스크립트 개체 'google.gears'를 사용하려는 모든 웹 페이지에서 사용할 수 있습니다. XPCOM 개발에 관한 많은 mozilla 문서를 찾았지만 웹 페이지에서 실행중인 javascript에 구성 요소를 표시하는 데는 아무 것도 발견하지 못했습니다. 이것이 XPCOM에서 가능합니까? 확장 기능 대신 파이어 폭스 플러그인을 작성해야합니까?웹 페이지의 javascript에 XPCOM 구성 요소를 노출하십시오.
답변
저는 Firefox 4의 새로운 API 인 nsiDOMGlobalPropertyInitializer를 사용하여 모든 창에 느리게 연결할 JS 개체를 만들 수 있습니다. 이것이 Firefox 4의 새로운 웹 콘솔이 생성되는 방식입니다. CI에
https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.js SO 기본적으로, QI : 여기
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]),
는 확장의 전체 구현의 예입니다
당신은 구성 요소에서 다음 QI 속성을 가지고 있어야 .nsIDGlobalPropertyInitializer를 선택한 다음 매니페스트에 다음과 같은 행이 있는지 확인하십시오.
category JavaScript-global-property crypt @droplettr.com/domcrypt;1
참조 : https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.manifest
This article 유망 보인다
는 일반적으로 (예 : 웹 페이지 등) 신뢰할 수없는 콘텐츠 그들을 만드는 을 포함, 대부분의 XPCOM 컴포넌트 아무것도 할 수 없습니다. 물론이 정책에 대한 예외가 있습니다. DOM 개체는 예를 들어 공용으로 사용하기 위해 명확하게 정의 된 인터페이스가있는 XPCOM 구성 요소입니다. 페이지에서 구성 요소를 사용하려면 어떤 방법이나 속성을 호출하는 것을 포함하여 구성 요소는 이 허용 가능하고 무엇이 아닌지 명시 적으로 Mozilla에게 말합니다. nsISecurityCheckedComponent 인터페이스 은 어떻게 수행되는지 정의합니다.
소스 : http://weblogs.mozillazine.org/weirdal/archives/017211.html
그것은 해 드리겠습니다하지만 당신은 프록시로 XPCOM 구성 요소에 대한 호출이있을 것이다. 또한 매우 위험 할 수 있음을 명심하십시오.
크롬 개체를 콘텐츠 코드에 노출시키는 방법은 내 대답 here을 참조하십시오.
이전 3.x 방법은 구성 요소를 "JavaScript 전역 속성"범주에 등록하는 것입니다. (이것은 4.x에서 여전히 작동하지만 카테고리 이름에는 더 이상 공백을 포함 할 수 없기 때문에 "JavaScript-global-property"카테고리를 사용해야합니다.) 객체는 nsIClassInfo 인터페이스와 모든 인터페이스를 구현해야합니다. 콘텐츠에 노출하고 싶다. 개체에 액세스하는 콘텐츠 스크립트를 알 수있는 방법이 없으므로별로 유용하지 않습니다.`
당신은 웹 확장이 할 수있는, 내가 읽고 더 이상 매니페스트 라인은 항상 '카테고리 자바 스크립트 글로벌 부동산 {속성 이름} {구성 요소 계약 ID}처럼 보일 것입니다 지원을
- 1. javascript xpcom 구성 요소에서 C++ xpcom 구성 요소를 사용하는 방법
- 2. C++ XPCOM 구성 요소의 테스트 기반 개발?
- 3. XPCOM 구성 요소에 타이머를 구현하는 방법은 무엇입니까?
- 4. __main__을 노출하십시오.
- 5. Firefox가 Fedora에서 XPCOM 구성 요소를로드하지 않습니다.
- 6. XPCOM C++ : RegExps를 지원합니까?
- 7. 웹 페이지의 DOM 요소를 열지 않고 액세스하기
- 8. XPCOM 구성 요소에서 Firefox 캐시에 항목 추가
- 9. XPCOM : sniff HTTP 응답
- 10. 어떤 구성 요소를 사용해야합니까?
- 11. 파이어 폭스 확장 xpcom 구성 요소 내부에서 GET 요청을 시작하는 페이지 요소를 얻는 방법?
- 12. webservice에 url을 노출하십시오.
- 13. WCF 웹 서비스 구성 요소를 웹에 결합해야합니까?
- 14. 줌라 : 앞 페이지의 구성 요소를 식별하는 방법은 무엇입니까?
- 15. ASP.Net - 현재 페이지의 모든 HTML 구성 요소를 반복하십시오.
- 16. 특정 웹 파트 페이지의 웹 파트 구성 저장
- 17. Chromium과 Delphi 6를 사용하여 웹 페이지의 "네이티브 함수"를 Javascript에 노출시키는 방법은 무엇입니까?
- 18. Firefox addon에 내장 된 XPCOM 구성 요소를 덮어 쓰는 방법은 무엇입니까?
- 19. XPCOM, C++에서 Javascript 함수 호출
- 20. Firefox에서 XPCOM 등록하기. 알 수없는 CID
- 21. 웹 페이지의 서식있는 텍스트 편집기
- 22. ZK : 구성 요소를 만들고
- 23. Gecko XPCOM 사용 웹킷
- 24. XPJS (Javascript XPCOM) 설명서?
- 25. Log4net 로그를 통해 RSS를 노출하십시오.
- 26. 기존 웹 사이트에 새 구성 요소를 통합하고 있습니까?
- 27. AIR의 HTML 구성 요소를 통한 HTML 액세스
- 28. slide 페이지의 수많은 요소를 교환하십시오.
- 29. 페이지의 모든 요소를 찾는 방법
- 30. VBScript를 통해 HTML 웹 페이지의 모든 요소를 트래버스하는 방법이 있습니까?
가 없습니다 – sdwilsh
유감스럽게 생각하지만 JS 글로벌 속성에 대한 새로운 점은 없습니다. nsIDOMGlobalPropertyInitializer 인터페이스는 새로 추가되었지만 질문자의 질문에 필요하지 않습니다. 꽤 멋지다. JS 전역 속성이 그것을 구현하면, 그것이 연결된 윈도우 객체를 찾을 수 있기 때문이다. 이것은 Firefox 4 이전에는 불가능했습니다. –