chrome.extension API을 사용하십시오.
요청을주고 받고 계속 통신하기 위해 포트를 더 잘 사용할 수 있습니다.
내가 제공하는 예는 팝업이 열렸을 때 연결되는 팝업과 백그라운드 페이지 사이에 양방향 통신을 생성합니다.
백그라운드 페이지와 팝업 페이지에 모두 포함되어있는 socket.js 파일을 만드십시오. 그런 다음 각에 당신은 단지 선언 할 수
다음
new Socket();
는 socket.js의 구현 :
var Socket = function() {
window.socket = this;
this.port = chrome.extension.connect({name:"popupToBackground"});
chrome.extension.onConnect.addListener(function(port) {
if(port.name == "backgroundToPopup") {}
else if(port.name == "popupToBackground") {
window.socket.port = chrome.extension.connect({name:"backgroundToPopup"});
}
else {
return;
}
port.onMessage.addListener(function(msg) {
try {
window[msg.namespace][msg.literal][msg.method].apply(this, msg.args);
}
catch(error) {
// your failed action goes here.
}
});
});
};
당신이 일반적인 방법은 당신을위한 메시지 리스너 작업에 통화를 할 수 있는지 확인합니다. 나는 위에 주어진 형식을 좋아합니다. 매우 강력합니다. 앞뒤로 메시지를 보내려면 바로 소켓에 게시를 :
는
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
이이 팝업 페이지에서 실행 된 그렇다면 그 배경 페이지를 부를 것이다 : 나 여기에
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
이 아주 좋은 재사용 가능한 자바 스크립트 객체. 당신이 좋아하면 당신은 특정 프로토 타입 기능을 추가 할 수 있습니다 -이 방법은 보내 더 쉽게 메시지 :
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
이제 말을 모두가 :
socket.sendOneTwo();
관련 : [배경 맥락에서 스크립트 (배경 스크립트, 브라우저 액션, 페이지 액션, 옵션 페이지 등) 사이에 통신] (//stackoverflow.com/q/41420528) – Makyen
[chrome 확장 기능에서 popup.js와 background.js를 통신하는 방법] (https://stackoverflow.com/questions/13546778/how-to-communicate)의 복제본이있을 수 있습니다. -inter-pop-js-and-background-js-in-chrome-extension) – JerryGoyal