Electron 截获 will-navig
2019-05-08 本文已影响0人
l蓝色梦幻
Electron官方文件告诉了我们,直接在<webview>
上监听 will-navigate
事件是没有用的。
但是我们需要实现 will-navigate
拦截事件,阻止 <webview>
的跳转。经过搜索后发现,所有的 event.preventDefault()
都应该从主程序中呼叫而不是渲染程序。
经过尝试,解决方案如下:
在官方文档上 webContents
上有个事件, did-attach-webview
。我们应用这个事件在主进程中获取到 webContents
。
-
在最外层
BrowserWindow
的webContents
上监听did-attach-webview
事件,获取新挂上去的<webview>
的webContents
。 -
使用获取到的
webContents
监听will-navigate
事件。
这时候,我们就可以在 will-navigate
事件中使用 e.preventDefault()
阻止 <webview>
导航至其他网页了。
参考:
Electron: 截獲 <webview> will-navigate 事件, 為內容來源實作白名單
correct error about will-navigate event in docs/api/web-contents.md