export const getIframeCookie = () => {
document.getElementById('my-iframe').onload = function () {
let iframeDocument = this.contentDocument || this.contentWindow.document;
let iframeCookies = iframeDocument.cookie;
console.log('Cookies from iframe:', iframeCookies);
};
};
export const getParentCookie = () => {
let parentCookies = document.cookie;
console.log('Cookies from parent:', parentCookies);
};
打印结果相同
同源能获取
这里明天来实验,暂时没有有非同源的页面来实验
非同源获取cookie都报错,更何况存入cookie
这里实验了百度ai提供的代码,以及网友实践的代码。为什么要写3.1算是记录自己踏坑的过程。
目前实验结果,可以互相通信;但是同一父页面,只能进行单向通信;
要么父页面postmessage,子页面监听
parent
export const parentPostMessage = () => {
console.log('parentPostMessage', 'hello parentPostMessage');
window.postMessage({ message: 'hello parentPostMessage' }, '*'); // 第二个参数是接收消息的域,'*'表示接受任何域
};
iframe
export const iframeReceiveMessage = () => {
window.parent.addEventListener(
'message',
function (event) {
// if (event.origin !== 'http://example.org') return; // 可选:检查消息来源
console.log('iframe Received message:', event.data, this.window);
},
false,
);
};
要么子页面post message,父页面监听
#iframe window.parent 这里的写法我有点疑惑,这不是获取的父级window吗?但是我写window.self不生效
export const iframePostMessage = () => {
console.log('iframePostMessage', 'hello iframePostMessage');
window.parent.postMessage({ message: 'hello iframePostMessage' }, '*'); // 第二个参数是接收消息的域,'*'表示接受任何域
};
#parent
export const parentReceiveMessage = () => {
window.addEventListener(
'message',
function (event) {
// if (event.origin !== 'http://example.org') return; // 可选:检查消息来源
console.log('parent Received message:', event.data, this.window);
},
false,
);
};
如若结合以上两段代码,在父页面post message,父页面和子页面都可以监听到;同样,在子页面postmessage,父页面和子页面都可以监听到。
父传子
父
export const parentPostMessage = () => {
console.log('parentPostMessage', 'hello parentPostMessage');
let iframe = document.getElementById('my-iframe');
iframe?.contentWindow?.postMessage('hello parentPostMessagetoiframe', '*');
};
子
export const iframeReceiveMessage = () => {
window.self.addEventListener(
'message',
function (event) {
// if (event.origin !== 'http://example.org') return; // 可选:检查消息来源
console.log('iframe Received message:', event.data);
},
false,
);
};
子传父
#iframe window.parent 这里就很好理解了,同级的window post & listen
export const iframePostMessage = () => {
console.log('iframePostMessage', 'hello iframePostMessage');
window.parent.postMessage({ message: 'hello iframePostMessage' }, '*'); // 第二个参数是接收消息的域,'*'表示接受任何域
};
#parent
export const parentReceiveMessage = () => {
window.addEventListener(
'message',
function (event) {
// if (event.origin !== 'http://example.org') return; // 可选:检查消息来源
console.log('parent Received message:', event.data, this.window);
},
false,
);
};
结合两段代码,父子互相传
参考:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务