3

내 Firefox 부가 기능은 콘텐츠 스크립트 (page-mod)에서 Fancybox (유형 : "iframe")를 엽니 다. Fancybox에서 내 자신의 서버에있는 내 자신의 HTML 페이지 (my_fancybox_stuff.html)를 보여줍니다. my_fancybox_stuff.js (my_fancybox_stuff.html의 자바 스크립트)에서 이제콘텐츠 스크립트의 IFrame. main.js와 통신하는 방법?

는, I는 현재 부가 기능의 main.js에게 메시지를 보낼 수 있습니까? 아니면 Fancybox를 연 콘텐트 스크립트에요?

Fancybox를 연 콘텐츠 스크립트에서 액세스 할 수 있으므로 my_fancybox_stuff.js에서 전역 '자체'개체에 액세스 할 수 있기를 기대하고있었습니다.

이 작업을 수행하기위한 잠재적 인 해결 방법에 대해 듣고 싶습니다.

크롬 확장 프로그램에서 이는 간단합니다. my_fancybox_stuff.js에서 chrome.extension.sendMessage()으로 전화하면 작동합니다.

미리 감사드립니다.

편집 : 내 사례를 명확히하기 위해 일부 코드를 추가하십시오. 읽기에 사람들의 시간을 절약 할 수 있도록 코드를 간소화했습니다. 이것은 안녕하세요 세상처럼 간단합니다. (페이지 모드 주입)을 contents_scipt.js에서

내가 전화 : my_fancybox_stuff.js에서

<!doctype html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <script src="js/jquery.js"></script> 
    <script src="js/my_fancybox_stuff.js"></script> 
</head> 
<body> 
<div id="my-wrapper"> 
    <div id="my-form-div"> 
    <form id="my-form" action="#"> 
     <div> 
     <div><p>Name</p></div> 
     <div><input id="fullname" type="text" name="fullname" value=""></div> 
     </div> 
     <div> 
     <div><p><a id="my-button" href="#">Press this</a></p></div> 
     </div> 
    </form> 
    </div> 
</div> 
</body> 

, 버튼 (:

$.fancybox.open(
    { 
    // Some irrelevant Fancybox options hidden for clarity 
    href:"http://www.mysite.com/my_fancybox_stuff.html 
    type: 'iframe' 
    } 
); 

my_fancybox_stuff.html는 다음과 같이 보일 것입니다 "my_button")을 누르면 입력 필드 ("fullname")의 값을 포함하는 메시지를 보내고 content_script.js에서 수신하려고합니다.

답변

2

예, my_fancybox_stuff.js은 (는) 부가 기능의 콘텐츠 스크립트와 postMessage()을 사용하여 통신 할 수 있습니다.

the documentation and examples at MDN을 참조하십시오.

+0

감사합니다. Brock! 나는 실제로 질문을 보내기 전에 window.postMessage에 대해 읽고 있었다. 그리고 나는 대답을 읽고 계속 읽었다. 나는 모든 웹 물건들과 같은 거짓말이다. 나는 나의 경우에 그것을 구현하는 방법과 모두 혼란 스럽다. 내 window.postMessage (페이지 - mod 시작된) 콘텐츠 스크립트에서 메시지를 듣고 싶을 때 무엇이 ​​'창'이어야합니까? 어쩌면 내 질문에 일부 코드를 추가해야합니다. – mikko76

+0

예, 코드를 가져 오는 코드를 제공하십시오. –

+0

오른쪽. 나는이 문제를 편집하고 나의 사례를 명확히하기 위해 간단한 코드를 추가했다. – mikko76