2017-12-14 2 views
1

Wie erhalten Sie den ausgewählten Text aus einer Webansicht in einer Elektronenanwendung? Ich verwende Angular mit Elektron. Also habe ich eine Komponente aufweisen, die eine Webansicht hat:Erhalten Sie ausgewählten Text von Elektronenwebview

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

Dies ist, was ich für den ausgewählten Text bekommen:

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); 

Das Problem: window.getSelection().toString() funktioniert nicht für den ausgewählten Text in der Webansicht. Es funktioniert nur für den Text außerhalb der Webansicht.

Antwort

0

webView ist eine spezielle Art von Tag in Electron. als Dokument (https://electronjs.org/docs/api/webview-tag) sagt 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..

Da es sich um einen anderen Prozess handelt und keine direkte Interaktion möglich ist, können Sie mit ipc zwischen externem und externem Frame kommunizieren. Überprüfen Sie Electron's IPC zu etablieren. Speziell interessiert Sie vielleicht ipcRenderer.sendToHost für Renderer-Host und Webview.

+0

Danke! Ich habe hier ein Tutorial gefunden: https://ourcodeworld.com/articles/read/201/how-to-send-retrieve-information-and-manipulate-the-dom-from-a-webview-with-electron-framework – Mate

Verwandte Themen