0
크롬 확장 프로그램 내에서 로컬로 HTML을 활성 탭의 div로 보내려고합니다. 백그라운드 스크립트를 통해 HTML을 보내고 활성 스크립트 탭에 콘텐츠 스크립트를 삽입하여 수신합니다.크롬 확장 메시지 전달 - HTML 전달 방법
나는 포트를 작동시켜 다양한 간단한 텍스트 기반 메시지로 테스트했습니다. div도 나타나지만 HTML은 제대로 전송되지 않으므로 비어 있습니다. 누구든지 내 코드에 어떤 문제가 있는지 알고 있습니까?
배경 스크립트 :
chrome.runtime.onConnect.addListener(function(port) {
console.assert(port.name == "sidebar");
port.onMessage.addListener(function(msg) {
if (msg.command == "read_sidebar")
{
//var sidebarURL = chrome.extension.getURL("sidebar.html");
//console.log(sidebarURL);
var element = document.createElement('div');
element.id = "test";
$("test").load('sidebar.html');
port.postMessage({command: "load_sidebar", html: element.innerHTML})
}
else if (msg.command == "close_load") {
console.log("told to close load");
}
});
});
콘텐츠 스크립트 :
function loadSidebar() {
var port = chrome.runtime.connect({name: "sidebar"});
port.postMessage({command: "read_sidebar"});
port.onMessage.addListener(function(msg) {
if (msg.command == "load_sidebar")
{
console.log(msg.html);
document.getElementById("mySidebar").innerHTML= msg.html;
port.postMessage({command: "close_load"});
}
});
}
흠. 사이드 바가 페이지의 DOM과 상호 작용해야하므로 iframe으로 삽입하지 않으려 고합니다. 정적 HTML이 아닙니다 (html에는 angularJS가 있습니다). 나는 XHR에 익숙하지 않다. XHR을 요청하고 응답을 조작하기 위해 읽을 수있는 문서는 무엇입니까? – Sandra
글쎄, 당신이 페이지에서 사이드 바를 분리하지 않으면, 모든 종류의 재미있는 일이 일어날 것이다. 그래서 당신은 그것을 재고하고 싶어 할지도 모릅니다. XHR은 [XmlHttpRequest] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)의 약자입니다. 원시 HTML 코드를 얻을 수는 있지만 정적이 아닌 경우에는 직접 유용하지 않습니다. – Xan
좋은 지적. 나는 그것을 iframe으로 만들었고 로컬 HTML 파일을 성공적으로 표시했다. 그러나 각도 코드는 깨고 있습니다. 머리글에 각도와 기타 모든 관련 스크립트를 포함 시켰지만 iframe에 일반 HTML이 표시됩니다. 주입 된 iframe이 angularJS를 사용할 수 있습니까? – Sandra