2017-12-14 13 views
1

전자 응용 프로그램에서 웹보기에서 선택한 텍스트를 가져 오는 방법은 무엇입니까? 저는 Angular with Electron을 사용하고 있습니다. 그래서 웹보기가있는 구성 요소가 있습니다전자 웹보기에서 선택한 텍스트 가져 오기

<webview id="foo" attr.src={{activeUrl}} style="height: 600px"></webview>

이것은 내가 선택한 텍스트를 얻기 위해 사용하는 것입니다 :

let rightClickPosition = null; 
const menu = new Menu(); 
const menuItem = new MenuItem({ 
    label: 'Get selected text', 
    click:() => { 
    // does not work for selected text in webview 
    console.log(window.getSelection().toString()); 
    } 
}); 
menu.append(menuItem); 
window.addEventListener('contextmenu', (e) => { 
    e.preventDefault(); 
    rightClickPosition = {x: e.x, y: e.y}; 
    menu.popup(remote.getCurrentWindow()); 
}, false); 

문제 : window.getSelection().toString()가에서 선택한 텍스트 작동하지 않습니다 webview. 그것은 웹뷰 밖의 텍스트에 대해서만 작동합니다.

답변

0

webView는 Electron의 특수 태그입니다. 문서 (https://electronjs.org/docs/api/webview-tag)에 따르면, Unlike an iframe, the webview runs in a separate process than your app. It doesn't have the same permissions as your web page and all interactions between your app and embedded content will be asynchronous.입니다.

다른 프로세스이고 직접적인 상호 작용을 허용하지 않으므로 통신 할 수있는 방법은 webview와 외부 프레임간에 ipc를 사용하는 것입니다. 전자의 IPC를 확인하십시오. 특히 당신은 ipcRenderer.sendToHost 렌더러 호스트 및 webview에 관심이 있습니다.

+0

감사합니다. 여기 튜토리얼을 발견했습니다 : https://ourcodeworld.com/articles/read/201/how-to-send-retrieve-information-and-manipulate-the-dom-from-a-webview-with-electron-framework – Mate