如果你想从外部(例如,另一个窗口或iframe)接收输入值,你可以使用多种方法来实现

在JavaScript中,如果你想从外部(例如,另一个窗口或iframe)接收输入值,你可以使用多种方法来实现。下面是一些常见的方法来从另一个窗口接收输入值:

方法1:使用window.postMessage

window.postMessage方法允许来自一个文档的脚本安全地向另一个源(例如,不同域的窗口或标签)发送消息。这对于跨域通信非常有用。

发送方(例如,一个iframe中的父页面)
// 假设你想从一个iframe发送消息到父页面

var iframe = document.getElementById('myIframe');

iframe.contentWindow.postMessage('Hello from iframe!', 'http://example.com'); // 目标源

接收方(例如,iframe的父页面)
window.addEventListener('message', receiveMessage, false);

function receiveMessage(event) {

    if (event.origin !== "http://example.com") { // 验证消息来源

        return;

    }

    console.log('Received message:', event.data); // 处理接收到的消息

}

方法2:使用window.name属性

如果你的iframe和父页面在同一个域下,你可以使用window.name属性来传递数据。

发送方(iframe)
// 设置window.name

window.name = 'Hello from iframe!';

接收方(父页面)
// 从window.name获取数据

var dataFromIframe = window.frames['myIframe'].name; // 假设iframe的name属性为'myIframe'

console.log('Received data:', dataFromIframe); // 处理接收到的数据

方法3:使用window.opener(针对弹窗或新窗口)

如果你的窗口是通过某种方式(如window.open)打开的,你可以使用window.opener来访问打开窗口的父窗口。

发送方(新窗口)
// 在新窗口中设置数据,然后关闭自己(可选)

window.opener.someData = 'Hello from popup!'; // 假设父窗口有一个属性叫someData来接收数据

window.close(); // 关闭当前窗口

接收方(父页面)
// 在父页面中接收数据

console.log('Received data:', window.someData); // 输出从新窗口接收到的数据

方法4:使用localStoragesessionStorage(适用于跨标签页通信)

如果你的应用需要在不同标签页之间共享数据,可以使用localStoragesessionStorage。不过,这种方法通常不用于跨域通信。

发送方
localStorage.setItem('sharedData', 'Hello from one tab!'); // 使用localStorage存储数据
接收方(同一浏览器标签页)
var data = localStorage.getItem('sharedData'); // 获取存储的数据

console.log('Received data:', data); // 处理数据

选择合适的方法取决于你的具体需求,比如是否需要跨域通信、是否在同一域内等。对于跨域通信,window.postMessage是首选方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值