阅读数:

electron 实践

0

说明

electron为全栈工程师开发桌面程序提供了可能,页面可以用任何姿势进行构建:jquery、react、vue等等,然后打包成应用程序。
但是有时候我们会集成一些已有的页面或者第三方页面进来。webview可以
解决这个问题

1
2
3
<webview src="" httpreferrer="" style="height: 100vh;width: 100vw;" id="chat-frame" plugins disablewebsecurity="on">

</webview>

但是会发现一个问题,如果引用的页面需要打开一个页面(_blank,_self)时,并没有任何反应,是因为第三方页面和electron本身不是一个体系,没法
直接进行通信。我们可以再webview上追加一个属性nodeintegration,
该属性可以让webview 中的访客页(guest page)将具有Node集成, 并且可以使用像 require 和 process 这样的node APIs 去访问低层系统资源。
这样如果我们用的

href
1
2
3
4
5
6
7
那我们把target改成_blank 或者用window.open 就又打不开了

解决思路也简单
* 方案一:第三方告诉主页面我要打开一个新页面
* 方案二:主页面自动监听是否需要开新页面
方案一设置到第三方页面的改动,不太现实;那只能方案二
<code>webview</code>会监听 new-window 事件,然后通过sheel打开,但也要配置<code>nodeintegration</code>,否则也会失效

const webview = document.querySelector(‘webview’);
webview.addEventListener(‘new-window’, (event) => {
const url = event.url;
url.startsWith(‘http’) && shell.openExternal(url);
})
`


^-^欢迎回复交流^-^


0
赏点咖啡钱^.^