VUE组件如何与iframe通信问题


vue组件内嵌一个iframe,现在想要在iframe内获取父vue组件内信息,由于本人技术有限,采用的是H5新特性PostMessage来解决跨域问题。

postMessage内涵两个API:

onMessage:消息监听

postMessage:消息发送

举个栗子,比如我要改变iframe内字体变成跟父级一样,直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    
</head>

<body>

    <div id="father" class="father" style="width: 100px;height: 100px;border: solid 1px #333;color: blue;" onclick="sentPost()">
        <div>father</div>
    </div>
    
    <iframe src="son.html" id="son"></iframe>
    
    <script type="text/javascript">
        function sentPost() {
            var iframeWin = document.getElementById('son').contentWindow;
            iframeWin.postMessage(document.getElementById("father").style.color, "*");
        }
        window.addEventListener("message",function(event){
            console.log(event,event.data);
        },false);
    </script>
</body>
</html>

以上代码将父级字体的颜色发送到子iframe;

子iframe代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="container" style="width: 200px;height: 200px;color: red;">son</div>
    <script type="text/javascript">
        window.addEventListener("message", function(event){
            console.log(event);
            var color = event.data;
            document.getElementById("container").style.color = color;
        },false);
    </script>
</body>
</html>

子iframe将监听消息然后渲染字体


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM