2012-11-02 3 views
1

Firefox OS의 홈 화면 용 위젯을 만들고 있습니다. 위젯을 B2G의 다른 응용 프로그램으로 분리하고 홈 화면에서 위젯의 내용을 iframe에로드합니다. 다른 도메인의 도메인이므로 동등한 도메인을 수정하지만 이벤트 핸들러를 등록해도 여전히 작동하지 않습니다.다른 B2G/Firefox OS 앱에 이벤트 등록

(위젯은 iframe 객체이고 foo는 내 함수입니다.) widget.contentWindow.oncontextmenu = foo;

내 처리기가 여전히 'contextmenu'이벤트에 대한 응답으로 호출되지 않습니다.

그러나 위젯 모듈을 홈 화면 모듈에 넣고 웹 응용 프로그램을 하나 만들면 정상적으로 작동합니다.

답변

3

contentWindow는 교차 출처가 불가능합니다. 다른 앱의 출처가 다릅니다.

mozbrowser iframe을 홈 화면 앱에 추가 한 경우 해당 iframe의 URL에서 위젯을로드하고 iframe에서 mozbrowsercontextmenu 이벤트를 수신 할 수 있습니다.

<iframe id="widget" mozbrowser=true></iframe> 

var widget = document.getElementById('widget'); 
widget.addEventListener('mozbrowsercontextmenu', eventHandler); 

은하려면 contextmenu 이벤트이 앱을 홈 화면은 "브라우저"권한의 추가가 필요 https://github.com/mozilla-b2g/gaia/blob/master/apps/browser/js/browser.js#L1021

을 처리하는 방법의 예를 들어 브라우저 응용 프로그램을 참조하십시오.

응용 프로그램으로로드하려는 경우 iframe에 mozapp 속성이 필요하므로 앱의 매니페스트를 가리켜 야합니다. 시스템 앱의 창 관리자가 앱을 iframe에 삽입하는 방법입니다.