私が持っている<webview>
私の電子アプリで。iframe
スルーと同じように、安全な「外国の」コミュニケーションが必要postMessage
です。したがって、たとえば:
webview.executeJavaScript("window.parent.postMessage('all done!')");
このサブウェブビューとの通信をオンにしnodeIntegration
て使用できるようにする唯一の選択肢はありますsendToHost
か?nodeIntegration
この1つの機能のためだけにすべてをオンにするのはやり過ぎのようです。
が無効になっている場合でも、IPCを含むwebview
プリロードスクリプトでElectronAPIにアクセスできますnodeIntegration
。プリロードスクリプトは、グローバル名前空間に関数を挿入できます。グローバル名前空間は、にロードされたページ内でアクセスできますwebview
。簡単な例:
webview-preload.js
:
const { ipcRenderer } = require('electron')
global.pingHost = () => {
ipcRenderer.sendToHost('ping')
}
webview-index.html
:
<script>
pingHost()
</script>
window-index.html
:
<script>
const webview = document.getElementById('mywebview')
webview.addEventListener('ipc-message', event => {
// prints "ping"
console.log(event.channel)
})
</script>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加