Vue是一款非常流行的JavaScript框架,而它可以與Iframe進行通信是很多人不知道的。在進行iframe通信時,我們需要兩個頁面:iframe內嵌的頁面和主頁面。對于主頁面,需要根據Vue的通信機制來進行操作,而iframe內嵌的頁面則需要通過postMessage方法來傳遞信息給主頁面。
在Vue中,我們可以通過$refs來獲取到Iframe元素,然后觸發load事件,在load事件中就可以進行通信操作了。
mounted() {
const iframeEle = this.$refs.dynamicIframe;
iframeEle.addEventListener('load', () =>{
iframeEle.contentWindow.postMessage('message from iframe', '*');
});
},
methods: {
handleMessage(e) {
console.log(e.data); // 'message from iframe'
}
},
created() {
window.addEventListener('message', this.handleMessage);
},
destroyed() {
window.removeEventListener('message', this.handleMessage);
}
如上所示,我們在Vue的mounted生命周期鉤子中監聽iframe的load事件,然后在回調函數中通過postMessage方法向主頁面發送信息。注意,'*'表示允許所有域名的頁面都可以接受信息。
在主頁面中,我們需要監聽message事件,這里我們通過$refs獲取到Iframe元素,然后向其contentWindow屬性添加message事件監聽函數。
mounted() {
const iframeEle = this.$refs.dynamicIframe;
iframeEle.contentWindow.addEventListener('message', (e) =>{
console.log(e.data); // 'message from iframe'
});
}
通過以上代碼,我們可以成功地實現Iframe和Vue之間的通信。這里需要注意的是,我們在Vue的created生命周期鉤子中添加了window的message事件監聽函數,在組件銷毀時需要進行移除。
上一篇c 微信 json