Electron 打包的项目无法弹出新窗口,我是内嵌了一个网页,不知道如何打开新窗口...
1
SourceMan 2017-06-30 18:56:40 +08:00 via iPhone
你的姿势不对
|
3
hanai 2017-07-01 16:02:19 +08:00
`window.open('http://www.baidu.com', '', 'width=800,height=650')`
|
4
hoythan OP @hanai 重点是这个网页的地址我不知道如何获取呀?你的意思是监听所有地址,判断打开就用这个 open 的方式打开吗?
|
5
binux 2017-07-01 17:34:08 +08:00
_target=blank ?
|
6
WittBulter 2017-07-01 17:51:11 +08:00 1
没看懂你的意思
如果你要调用外部浏览器打开:shell.openExternal 在原有的渲染进程中打开一个新窗口:window.open,返回 BrowserWindow,可以操作 handle 改变这个窗口。注意父窗口 webPreferences 里面 nodeIntegration 的选项。 当然你也可以试试 new BrowserWindow({parent: top}),模拟弹窗也可以这样的方式创建,同时把父窗口设置禁用 你也可以新开一个 electron 渲染进程:new BrowserWindow,destroy 原来的窗口,新窗口 ready-to-show 之后 show 出来就可以了 |
7
hoythan OP @WittBulter 意思就是我在里面内嵌了一个网页,那个网页游 a 标签是需要新标签页打开的,也就是我需要新建一个窗口给他,我怎么操作才行,现在默认的状态是无法打开新标签页面的。
|
8
hoythan OP @WittBulter 这个网页里的 Js 写了 window.open 然后我不知道如何获取她这个 borwserwindow
|
9
WittBulter 2017-07-04 21:29:13 +08:00
@hoythan
理想的做法是 ipc 通信传给主进程,需要打开一个窗口,链接是 xxx。 主进程自然有这个 borwserwindow 存在那里,操作一下就行了,这也是应该的。如果 borwserwindow 返回的 handle 没有放在变量里存着,会导致页面突然崩掉或者被回收。 简而言之,和网页的思路有一些不同,你需要把大部分逻辑放在主进程解决,这也是比较好的做法。(当然你也可以从渲染进程调用 remote 之类的东西去操作主进程的对象,这很容造成内存泄露很难 debug ) |