该方法可以实现在页面中点击按钮,跳转到另外一个游览器 tab 页面(简称为新页面),
在新页面处理完成逻辑后,可以向原页面发送通知,常用于 oauth 登录等功能。
window.open
该方法将打开一个新的网页标签
注意:若用户未交互,游览器会阻止该方法的执行(游览器会认为不是用户的操作,认为是广告等)
解决:在用户交互事件中调用 window.open(click 等事件)
document.getElementById('btn').addEventListener(function (e) {
window.open('https://www.baidu.com');
})
window.opener
当前网页必须由 window.open 打开时才有
window.opener 指向 window.open 时的父 window 对象
window.opener.alert('提示')
实现(跳转网页回调)
父窗口
// 定义回调 cb 事件
window.callback = function (params) {
console.log(params);
};
// 点击按钮触发网页跳转,打开一个新页面
document.getElementById('btn').addEventListener(function (e) {
window.open('https://www.baidu.com');
})
子窗口
// 触发父窗口回调方法,并传入参数
window.opener.callback(/* any */);
// 关闭当前子窗口
window.close();
这样保证了页面的执行顺序,也保证了用户体验。