electron使用webview 链接跳转,阻止创建新窗口。

1,777 阅读1分钟

electron版本:22.0.0

遇到问题

网上都是低版本的写法,高版本使用没效果

问题解决

嵌套webview的地方

allowpopups添加上的时候,winod.open()的链接就可以点击了。但是会新建一个electron窗口。

//入口文件
<webview
        src="https://www.baidu.com/"
        allowpopups
></webview>

解决在当前窗口加载window.open()的链接

const {
	app,
} = require("electron");

//监听webview新建的窗口
app.on('web-contents-created', (event, contents) => {
	if (contents.getType() === 'webview') {
		contents.setWindowOpenHandler(({ url }) => {
			contents.loadURL(url);
			return { action: "deny" };
		});
	}
})

低版本的写法

app.on('web-contents-created', (event, contents) => {
    if (contents.getType() === 'webview') {
        contents.on('new-window', (event) => {
            event.preventDefault()
        })
    }
})

具体多少版本请参考

image.png