iframe跨域解決方案


    公司某個功能用的是iframe,由於跨域的原因,我們不能直接設置父級頁面iframe的高度,所以用了一個中間頁home來完成父級頁面iframe的高度設置,這種中間頁其實很多時候不好用,因為涉及到頁面跳轉和刷新,每次都得刷一下頁面,而消息發送成功頁的一個定位到頂部的功能,就是由於頁面刷了一次導致體驗不好,除了體驗,這種中間頁跳轉的做法也很蹩腳和繁瑣。

    昨天網上Get了一下iframe的跨域解決方案 找到了一個方法!

    postMessage,通過postMessage可以實現iframe的跨域通信。原理是子頁面向父頁面發送消息,父頁面接收消息。

    話不多說直接干貨。

 

    子頁面代碼:

top.postMessage('success', '在這里填寫父頁面URL');

    父頁面代碼:

    //響應事件
    window.addEventListener('message', function (e) {
        var color = e.data;
        console.log(color);
        if (color == "success")
        {
            $("#MessageSend").height(600);
            $(window).scrollTop(0);
        }
    }, false);

    如上,子頁面向父頁面發送了一條消息 “success”,父頁面獲取消息后判斷消息內容是不是想要的,進而做相應的操作。

 

    上面的代碼還應該完善一下,父頁面接收消息請求的時候,應該驗證域名,總不能隨便一個頁面發來消息這邊就處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM