vue中使用postMessage進行跨越傳值


想在“當前位置”獲取子頁面的title屬性,但是main頁面和子頁面在不同的端口上,直接獲取會出現:

“Blocked a frame with origin from accessing a cross-origin frame”跨域問題

於是改用postMessage進行跨域訪問;

子頁面中:

 mounted(){
            this.frameInfo();
        },
methods: {
            frameInfo(){
                var data = document.title;
                console.log(data)
                console.log(basepPath)
                parent.postMessage(data, '*');//data為傳遞內容,*修改為具體域名或者ip
            },
}

父頁面中監聽子頁面傳遞來的“message”事件,剛開始我把監聽事件放在了,iframe的load事件中監聽,每次需要點擊兩次以上才能獲取到

message的監聽事件,於是搜索一通, https://segmentfault.com/q/1010000006937415 

最后把監聽事件放在<script>最底部去執行,就能正常獲取了;

…… 
window.addEventListener('message', function(messageEvent) {
            var data = messageEvent.data;
            console.info('message from child:', data);
            vue.menuTitle = data;
        },false);
        /*]]>*/
    </script>

  

參考:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage#Example


免責聲明!

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



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