网页和 iframe 如何通讯

2022-07-04  本文已影响0人  回不去的那些时光

案例

// index.html
<p>
    <button id="btn1">向子页面发送消息</button>
</p>
<iframe id="iframe1" src="./child.html"></iframe>

<script>
    const btn1 = document.getElementById("btn1");
    btn1.addEventListener("click", () => {
        console.log("index clicked");
        // postMessage 有两个参数 第一个参数是发送的信息,第二个参数是域名限制
     window.iframe1.contentWindow.postMessage("index", "*");
    })

    // 接收信息
    window.addEventListener("message", event => {
        console.log("origin", event.origin);  // 来源的域名
        console.log("index received", event.data);
    })
</script>
// child.html
<button id="btn1">向主页面发送消息</button>

<script>
    const btn1 = document.getElementById("btn1");
    btn1.addEventListener("click", () => {
        console.log("child clicked");
        // 子页面向父页面发送消息
        window.parent.postMessage("child", "*");
    })
    
    // 父页面接收消息
    window.addEventListener("message", event => {
        console.log("origin", event.origin); // 判断 origin 的合法性
        console.log("child received", event.data);
    })
</script>
上一篇下一篇

猜你喜欢

热点阅读