Firefox 확장 프로그램을 만들었습니다. Firefox 확장 프로그램은 popup.html에 iframe이 있습니다.
iframe과 main.js간에 메시지를 전달하려면 postMessage 메소드를 사용하고 있습니다.Firefox 확장 프로그램이 백그라운드에서 계속 실행 중입니다.
메시지를받을 때 팝업이 이상하게 작동합니다. 받은 메시지를 얻기 위해 console.log를 사용했습니다. 이 메시지는 여러 번 console.log를 얻습니다. 시간 연장이 클릭되었습니다. 예 : 확장 프로그램을 네 번 열어 본 경우 iframe은 메시지를 한 번만 전달하지만 메시지는 네 번 수신됩니다.
는 내가 단계별 프로세스를 쓰고 있어요 이해하기 :열고 탭을 확장을 클릭합니다.
메시지가 iframe에서 main.js로 전달됩니다. 메시지를받은 후 console.log는 동일한 메시지를 전달합니다. 이제이 메시지가 한 번 나타납니다.
확장 프로그램을 닫으려면 아무 곳이나 클릭하십시오. 확장 프로그램을 다시 클릭하십시오> 메시지가 전달됩니다> console.logs 동일한 메시지를 두 번.
이 과정을 반복하면 메시지가 여러 번 기록되고 확장 프로그램이 클릭됩니다.
Firefox에서이 버그가 있습니까? 아니면 뭔가 잘못하고있는거야? 내가 "을 myApp를 호출하고있어 경우
:
편집 :
if (self.port !== undefined){
self.port.on("show", function(a,b) {
myApp.initialize(a,b);
});
}
var myApp = {
initialize: function (a,b){
window.addEventListener ("message" , receiveMessage, false);
function receiveMessage(event){
console.log("event.data - - - - - - ",event.data);
}
},
goAbc : function(){
self.port.emit("close");
}
}
가있는 iframe 코드는
: 수정 됨
$(document).ready(function(){
parent.postMessage("getData", "*");
});
: 질문 하나 더 여기 내 main.js에서 일부 조각입니다 .goAbc() "코드에서 어딘가에, 그것은 말한다, self.port 정의되지 않습니다. 여기에 무슨 문제가 있니? self.port 대신 다른 것을 사용해야합니까?
최소의 재생산 예 (코드)를 게시하십시오. – nmaier
@nmaier : 코드로 질문을 업데이트했습니다. Pls는 모양을 가지고있다. :) – ignVinayak
새 질문을 올리십시오. 추가 작업에는 편집을 사용하지 마십시오. 그래도 좋은 답변 (또는 답변)을 원한다면 ** 완전한 ** 재현 가능한 예를 게시해야합니다. '창'및/또는 '자기'가 어디서 유래했는지 추측 할 필요가 없습니다. – nmaier