2013-08-07 4 views
1

다음과 같이 내가 패키지 응용 프로그램에서 일하고 있어요 :간 메시징 웹보기 및 여러 개의 창

  • 창 1 : PostMessage를 방법은 웹보기 창 사이의 통신에 사용되는 웹보기가 있습니다.

(Window 1)의 Webview에서 다른 창 (즉, Window 2)으로 메시지를 보낼 수 있습니까? 또는 다른 방법으로 백그라운드 스크립트가 postMessage를 수신 할 수 있습니까?

Webview 내의 페이지에서 appWindow.source를 사용해 보았지만 관리 할 수 ​​없었습니다. 가능합니까? 어떤 아이디어?

답변

0

당신은 메시지가 다른 창에 웹보기에서 수신 방송 chrome.runtime.sendMessagechrome.runtime.onMessage를 사용할 수 있습니다.

그래서 webview가있는 창은 다른 창으로 메시지를 보내고받을 수있는 프록시 역할을합니다. 다음과 같은 코드가 있습니다 :

window.addEventListener('message', (event) => { 
    event.preventDefault(); 
    const message = event.data; 
    console.log(`viewer window is broadcasting message from webview: ${JSON.stringify(event.data)}`); 
    chrome.runtime.sendMessage(event.data); 
}); 

const webview = document.querySelector('webview'); 
webview.addEventListener('loadstop',() => { 
    webview.contentWindow.postMessage({from: 'app', cmd: 'init'}, webview.src); 
}); 

function handleMessage(message) { 
    if (message.from === 'anotherwindow') { 
     console.log('webview window received message from another window, sending it to webview'); 
     webview.contentWindow.postMessage(message, webview.src); 
    } 
} 

chrome.runtime.onMessage.addListener(handleMessage);