Electron 截获 will-navig

2019-05-08  本文已影响0人  l蓝色梦幻

Electron官方文件告诉了我们,直接在<webview>上监听 will-navigate 事件是没有用的。

但是我们需要实现 will-navigate 拦截事件,阻止 <webview> 的跳转。经过搜索后发现,所有的 event.preventDefault() 都应该从主程序中呼叫而不是渲染程序。

经过尝试,解决方案如下:

官方文档webContents 上有个事件, did-attach-webview 。我们应用这个事件在主进程中获取到 webContents

  1. 在最外层 BrowserWindowwebContents 上监听 did-attach-webview 事件,获取新挂上去的 <webview>webContents

  2. 使用获取到的 webContents 监听 will-navigate事件。

这时候,我们就可以在 will-navigate 事件中使用 e.preventDefault() 阻止 <webview> 导航至其他网页了。

参考:

Electron: 截獲 <webview> will-navigate 事件, 為內容來源實作白名單

webview navigation events

correct error about will-navigate event in docs/api/web-contents.md

上一篇下一篇

猜你喜欢

热点阅读