Electron 新标签页打不开怎么处理

2017-06-30 18:52:40 +08:00
 hoythan

Electron 打包的项目无法弹出新窗口,我是内嵌了一个网页,不知道如何打开新窗口...

1797 次点击
所在节点    问与答
9 条回复
SourceMan
2017-06-30 18:56:40 +08:00
你的姿势不对
hoythan
2017-07-01 15:49:47 +08:00
@SourceMan 啥意思呀...我想实现我放在 electron 的页面可以新窗口打开页面...
hanai
2017-07-01 16:02:19 +08:00
`window.open('http://www.baidu.com', '', 'width=800,height=650')`
hoythan
2017-07-01 17:27:46 +08:00
@hanai 重点是这个网页的地址我不知道如何获取呀?你的意思是监听所有地址,判断打开就用这个 open 的方式打开吗?
binux
2017-07-01 17:34:08 +08:00
_target=blank ?
WittBulter
2017-07-01 17:51:11 +08:00
没看懂你的意思
如果你要调用外部浏览器打开:shell.openExternal
在原有的渲染进程中打开一个新窗口:window.open,返回 BrowserWindow,可以操作 handle 改变这个窗口。注意父窗口 webPreferences 里面 nodeIntegration 的选项。
当然你也可以试试 new BrowserWindow({parent: top}),模拟弹窗也可以这样的方式创建,同时把父窗口设置禁用
你也可以新开一个 electron 渲染进程:new BrowserWindow,destroy 原来的窗口,新窗口 ready-to-show 之后 show 出来就可以了
hoythan
2017-07-02 17:39:02 +08:00
@WittBulter 意思就是我在里面内嵌了一个网页,那个网页游 a 标签是需要新标签页打开的,也就是我需要新建一个窗口给他,我怎么操作才行,现在默认的状态是无法打开新标签页面的。
hoythan
2017-07-03 16:00:11 +08:00
@WittBulter 这个网页里的 Js 写了 window.open 然后我不知道如何获取她这个 borwserwindow
WittBulter
2017-07-04 21:29:13 +08:00
@hoythan
理想的做法是 ipc 通信传给主进程,需要打开一个窗口,链接是 xxx。
主进程自然有这个 borwserwindow 存在那里,操作一下就行了,这也是应该的。如果 borwserwindow 返回的 handle 没有放在变量里存着,会导致页面突然崩掉或者被回收。

简而言之,和网页的思路有一些不同,你需要把大部分逻辑放在主进程解决,这也是比较好的做法。(当然你也可以从渲染进程调用 remote 之类的东西去操作主进程的对象,这很容造成内存泄露很难 debug )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX