美文网首页
postMassage之跨域通信

postMassage之跨域通信

作者: kalrase | 来源:发表于2020-09-10 11:37 被阅读0次

自行本地启动服务,修改host

parent.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>doding.com</h1>
    <iframe src="http://tohao.com:9413" frameborder="1" id="ifr1" name="ifr1" scrolling="yes">
        <p>Your Browser dose not support iframes</p>
    </iframe>
    <input type="text" id="message">
    <input type="button" value="this is message" onclick="sendIt()">
    <script>
        //父到子的通信
        var myIframe = document.getElementById('ifr1')
        function sendIt() {
            myIframe.contentWindow.postMessage(document.getElementById('message').value, 'http://tohao.com:9413')
        }
        //监听子到父的消息
        window.addEventListener('message', function (e) {
            console.log('父级:', e);
            // e.source.postMessage('received'+'--parent', e.origin);  //向原网页返回信息
            //执行动作
            //   window.open('http://www.baidu.com')
        })
    </script>
</body>

</html>

子页面

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>tohao.com</h1>
    <input type="button" name="demoBtn" id="demoBtn" value="click">
</body>
<script>
    localStorage.setItem('roomId', '1335380');

    //监听父级发送的消息
    window.addEventListener('message', receiver, true);
    function receiver(e) {
        console.log(e, 'e');
        if (e.origin == 'http://doding.com:9133') {
            if (e.data == 'give u a message') {
                // 回应父级消息
                e.source.postMessage('received' + localStorage.getItem('roomId'), e.origin);  //向原网页返回信息
            } else {
                alert(e.data.toString());
            }
        }
    }
    //子到父通信
    document.getElementById('demoBtn').onclick = function () {
        top.postMessage('hedfs', 'http://doding.com:9133')
    }
</script>

</html>

相关文章

  • postMassage之跨域通信

    自行本地启动服务,修改host parent.html 子页面

  • FE-interview-Q&A

    浏览器标签页通信 WebSocket (可跨域) postMessage(可跨域)iframe 父子通信np = ...

  • localStorage 如何跨域通信?

    cookie 跨域主要记住一个单词,如下: 看看 localStorage 如何跨域通信? 因为要跨域所以我们需要...

  • postMessage 相关漏洞分析与分享

    前言 postMessage API 是在 HTML5 中引入的通信方法,可以在标签中实现跨域通信。 跨域嘛,大家...

  • 跨域通信之CORS

    简介 CORS是一个W3C标准,全称是“跨域资源共享”(Cross-origin resource sharing...

  • 跨域通信

    一、跨域and同源政策 1.跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对ja...

  • 跨域通信

    阮一峰同源策略浏览器处于安全考虑实行了同源策略机制。同源指的是 协议相同 域名相同 端口相同 举例来说,http:...

  • 跨域通信

    跨域通信常用的几种方式 1、JSONP 2、WebSocket 3、CORS 4、Hash 5、postMessa...

  • layui下,iframe父子窗口的通信

    iframe通信/跨域通信。http://fly.layui.com/jie/19251/ 待整理

  • 前端基础面试题

    1. 跨域问题 同源:两个文档需满足:协议相同,域名相同,端口相同。跨域通信 :js进行DOM操作、通信时如果目标...

网友评论

      本文标题:postMassage之跨域通信

      本文链接:https://www.haomeiwen.com/subject/idtpektx.html