欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 跨页面进行数据通讯

跨页面进行数据通讯

2025/4/2 9:11:19 来源:https://blog.csdn.net/l284969634/article/details/141822976  浏览:    关键词:跨页面进行数据通讯

跨页面进行数据通讯

  • 1.iframe 数据通讯 postMessage/message(可设置不同源数据通讯)
  • 2.使用 LocalStorage 或 SessionStorage(同源)
  • 3.Broadcast Channel API(同源)

1.iframe 数据通讯 postMessage/message(可设置不同源数据通讯)

A页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>父页面</title>
</head>
<body><h1>父页面</h1><iframe id="childFrame" src="http://localhost/B.html" width="400" height="300"></iframe><button id="sendMessageButton">发送消息给子页面</button><div id="receivedMessage"></div><script>const origin = "http://localhost:9933"document.getElementById('sendMessageButton').addEventListener('click', function() {const message = 'Hello 来自父亲的消息!';const childFrame = document.getElementById('childFrame');childFrame.contentWindow.postMessage(message, childFrame.src);});window.addEventListener('message', function(event) {if (event.origin !== origin) {// 检查消息来源,确保来自正确的源return;}// 防止消息循环if (event.source === window) {return; // 忽略来自自身的消息}console.log("A");console.log(event.origin);document.getElementById('receivedMessage').innerText = event.data;});</script>
</body>
</html>

B页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>子页面</title>
</head>
<body><h1>子页面</h1><button id="sendMessageButton">发送消息给父页面</button><div id="receivedMessage"></div><script>const origin = "http://localhost:9976"document.getElementById('sendMessageButton').addEventListener('click', function() {const message = 'Hello 来自儿子的消息!';window.parent.postMessage(message, origin);});window.addEventListener('message', function(event) {if (event.origin !== origin) {// 检查消息来源,确保来自正确的源return;}document.getElementById('receivedMessage').innerText = event.data;});</script>
</body>
</html>

2.使用 LocalStorage 或 SessionStorage(同源)

A页面

 localStorage.setItem('sharedData', 'Hello from Page A!');

B页面

localStorage.getItem('sharedData');

3.Broadcast Channel API(同源)

Broadcast Channel API 允许在一个源的不同窗口、标签页或 iframe 之间进行通信。这是一种实时的通信机制,非常适合需要实时同步数据的场景。

A页面中:

const channel = new BroadcastChannel('my-channel');
document.getElementById('sendMessageButton').addEventListener('click', function() {channel.postMessage('Hello from Page A!');
});channel.onmessage = function(event) {console.log('Received message:', event.data);
};

B页面

const channel = new BroadcastChannel('my-channel');
channel.onmessage = function(event) {console.log('Received message:', event.data);document.getElementById('receivedMessage').innerText = event.data;
};channel.postMessage('Hello from Page B!');

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词