window.open 函数
打开一个新窗口并加载 URL。
当调用
window.open
以在网页中创建新窗口时,将为url
创建一个新的BrowserWindow 实例,并返回一个代理至window.open
以让页面对其进行有限的控制。该代理具有有限的标准功能,与传统网页兼容。要完全控制新窗口,你应该直接创建一个
BrowserWindow
。默认情况下, 新创建的
BrowserWindow
将继承父窗口的选项。若要重写继承的选项, 可以在features
字符串中设置它们。
window.open(url[, frameName][, features])
例子:通过window.open打开子窗口,父子窗口之间通信的例子
step1:在父窗口中打开子窗口,以及在父窗口监听子窗口传来的信息
step2:创建子窗口,在子窗口中传递信息给父窗口
将消息发送给指定来源的父窗口,如果未指定来源则发送给*,即所有窗口。
window.opener.postMessage(message, targetOrigin)
——message String
——targetOrigin String
【
targetOrigin :这个参数称作“目标域”,注意啦,是目标域不是本域!比如,你想在2.com的网页上往
1.com网页上传消息,
那么这个参数就是“http://1.com/”,而不是2.com.
另外,一个完整的域包括:
协议,主机名,端口号。如:http://g.cn:80/
】
step3:在父窗口中关闭子窗口
那么怎么在父窗口中取到子窗口呢?
这里涉及到一个类:BrowserWindowProxy
操纵子浏览器窗口
进程: 渲染进程
使用
window.open
创建一个新窗口时会返回一个BrowserWindowProxy
对象,并提供一个有限功能的子窗口.
实例方法
BrowserWindowProxy
对象具有以下实例方法:将焦点从子窗口中移除.
不调用卸载事件,便关闭了子窗口。
code
StringEval子窗口中的代码
聚焦子窗口(即窗口置顶)
调用子窗口上的打印对话框
win.postMessage(message, targetOrigin)
message
anytargetOrigin
String调通过指定位置或用
*
来代替不明位置,向子窗口发送信息除了这些方法,子窗口还可以无特性和使用单一方法来实现
window.opener
对象.
代码如下
step4:父窗口向子窗口传递信息
第一种方法就是用location.href
第二种方法如下:借用到了BrowserWindowProxy