window.open回调方法的一种实现

 1 var callback = "callback";
 2 if(callback != null) {
 3     if(window.opener != null && window.opener[callback] != undefined) {
 4         callback = window.opener[callback];
 5         callback({});
 6         window.close();
 7     }else if(window.parent != null && window.parent[callback] != undefined) {
 8         callback = window.parent[callback];
 9         callback({});
10     }
11 }

 

转载于:https://www.cnblogs.com/jieyuefeng/archive/2013/04/08/3008584.html

`window.open` 是 JavaScript 中的一个方法,它用于打开一个新的浏览器窗口或标签页,并且可以接收一个参数作为 URL,即目标地址。然而,`window.open` 方法本身并不直接提供获取回调地址的功能。回调地址通常是指在某个操作完成后,系统需要返回到的地址。 如果你需要在打开新窗口后,能够在新窗口中执行某些操作,并且在操作完成后能够将结果传递回原始页面,你可能需要使用以下几种技术手段: 1. 使用查询参数(Query Parameters):在打开新窗口的 URL 中加入特定的查询参数,新页面可以根据这些参数执行相应的操作,并在完成后,通过某种方式(如重定向)将用户带回带有结果的地址。 2. 使用 `window.opener` 属性:如果新窗口是由当前页面打开的,那么新窗口可以使用 `window.opener` 来访问并操作打开它的那个窗口。 3. 使用 Web Storage API:可以在新窗口中使用 `localStorage` 或 `sessionStorage` 存储数据,然后在原窗口中侦听 `storage` 事件来获取这些数据。 4. 使用 `window.postMessage` 方法:这是一种在跨源通信中非常有用的机制,允许窗口间通过发送消息进行安全的通信。 以下是一个使用 `window.open` 结合 `window.opener` 的简单示例: ```javascript // 假设当前页面的 URL 是 http://example.com var newWindow = window.open('http://example.com/targetPage.html?param=value', '_blank'); // 在新窗口中,可以执行操作,比如: // targetPage.html if (window.opener) { window.opener.postMessage({ result: 'some data' }, 'http://example.com'); } // 在原窗口中侦听消息: window.addEventListener('message', function(event) { if (event.origin === 'http://example.com') { console.log('Received data:', event.data); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值