在JavaScript中,如果你想从外部(例如,另一个窗口或iframe)接收输入值,你可以使用多种方法来实现。下面是一些常见的方法来从另一个窗口接收输入值:
方法1:使用window.postMessage
window.postMessage方法允许来自一个文档的脚本安全地向另一个源(例如,不同域的窗口或标签)发送消息。这对于跨域通信非常有用。
发送方(例如,一个iframe中的父页面)
// 假设你想从一个iframe发送消息到父页面
// 假设你想从一个iframe发送消息到父页面var iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage('Hello from iframe!', 'http://example.com'); // 目标源
接收方(例如,iframe的父页面)
window.addEventListener('message', receiveMessage, false);
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.namewindow.name = 'Hello from iframe!';
接收方(父页面)
// 从window.name获取数据
// 从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:使用localStorage或sessionStorage(适用于跨标签页通信)
如果你的应用需要在不同标签页之间共享数据,可以使用localStorage或sessionStorage。不过,这种方法通常不用于跨域通信。
发送方
localStorage.setItem('sharedData', 'Hello from one tab!'); // 使用localStorage存储数据
localStorage.setItem('sharedData', 'Hello from one tab!'); // 使用localStorage存储数据接收方(同一浏览器标签页)
var data = localStorage.getItem('sharedData'); // 获取存储的数据
var data = localStorage.getItem('sharedData'); // 获取存储的数据console.log('Received data:', data); // 处理数据
选择合适的方法取决于你的具体需求,比如是否需要跨域通信、是否在同一域内等。对于跨域通信,window.postMessage是首选方法。
1391

被折叠的 条评论
为什么被折叠?



