一、描述
通常情况下,一个窗口(无论是父窗口还是iframe窗口)不能直接访问另一个窗口的JavaScript变量或DOM,尤其是当这两个窗口处于不同的域时,这是因为浏览器的同源策略(Same-Origin Policy)限制了这种交互。
但是,你可以在父窗口中执行Ajax请求,并通过postMessage机制将数据转发给iframe窗口。以下是一个简单的示例流程:
1.父窗口发起Ajax请求:
在父窗口中发起Ajax请求,从服务器获取数据。
2.父窗口发送数据到iframe:
当Ajax请求成功并返回数据后,父窗口可以使用postMessage方法将数据发送给iframe。
3.iframe监听消息:
iframe窗口需要监听message事件,以便在接收到消息时处理数据
二、父窗口(Parent Window)
axios.get('/api/data')
.then(function(response) {
var data = response.data;
var iframe = document.getElementById('your_iframe_id');
var targetWindow = iframe.contentWindow;
targetWindow.postMessage(data, '*');
})
.catch(function(error) {
console.error(error);
});
三、iframe窗口(Child Window)
window.addEventListener('message', function(event) {
if (event.origin !== 'http://parent-origin.com') return;
var data = event.data;
console.log('Received data:', data);
}, false);