国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端--iframe爬坑記錄

nanchen2251 / 953人閱讀

摘要:且中沒(méi)有緩存這些消息。查閱了很多資料,后來(lái)發(fā)現(xiàn)這又是一坑。在沒(méi)有加載完成的情況下,消息自然是發(fā)不到的。解決辦法就是需要的事件寫到的事件中,代碼如下

1、iframe通信

由于項(xiàng)目中有用到vue嵌入靜態(tài)頁(yè)面實(shí)現(xiàn)功能,vue頁(yè)面和普通H5頁(yè)面通信就是個(gè)問(wèn)題。這篇文章寫得很詳細(xì)https://segmentfault.com/a/11...

但是在開(kāi)發(fā)過(guò)程中還是遇到了一些問(wèn)題,比如:
iframe發(fā)出跳轉(zhuǎn)消息 ---> vue頁(yè)面處理消息,根據(jù)消息跳轉(zhuǎn)至對(duì)應(yīng)頁(yè)面 ---> 對(duì)應(yīng)頁(yè)面點(diǎn)擊跳轉(zhuǎn)至原來(lái)的vue頁(yè)面
如上過(guò)程在重復(fù)第二次的時(shí)候,從iframe發(fā)出的消息到vue頁(yè)面的監(jiān)聽(tīng)器中,會(huì)出現(xiàn)兩次響應(yīng),且?guī)С龅膬纱蜗⒎謩e為前幾次和本次的,接下來(lái)的重復(fù)跳轉(zhuǎn)過(guò)程都會(huì)有重復(fù)響應(yīng)。

起先,我是懷疑window會(huì)緩存消息,因?yàn)樗⑿孪马?yè)面,之前的響應(yīng)消息就沒(méi)有了,但是找了一大圈也沒(méi)有清除window緩存的方法。且localstorage中沒(méi)有緩存這些消息。
然后仔細(xì)發(fā)現(xiàn),在打開(kāi)第二個(gè)vue頁(yè)面時(shí),第一個(gè)vue頁(yè)面被銷毀了,再次回到第一個(gè)頁(yè)面時(shí),其實(shí)是重新加載了頁(yè)面。我想這是由于vue基于組件來(lái)構(gòu)建頁(yè)面的原理所造成的,所以再一次構(gòu)建組件時(shí),會(huì)向window再次添加監(jiān)聽(tīng)器。

anyway,解決方法如下:
既然會(huì)重復(fù)添加,那就在vue組件銷毀時(shí),刪除window的監(jiān)聽(tīng)器。

// 在組件生命周期結(jié)束的時(shí)候銷毀
beforeDestroy() {
    if (window.addEventListener) {
        window.removeEventListener("message", this.handleMessage)
    } else {
        window.detachEvent("message", this.handleMessage)
    }
}

下面是添加監(jiān)聽(tīng)器的代碼

created() {
    if (window.addEventListener) {
        window.addEventListener("message", this.handleMessage)
    } else {
        window.attachEvent("message", this.handleMessage)
    }
}

2、iframe加載

在向iframe頁(yè)面發(fā)送消息時(shí),偶爾會(huì)有發(fā)不到iframe的現(xiàn)象。查閱了很多資料,后來(lái)發(fā)現(xiàn)這又是一坑。
https://blog.csdn.net/baidu_3...
在iframe沒(méi)有加載完成的情況下,消息自然是發(fā)不到iframe的。但是既然發(fā)不到的話也應(yīng)該報(bào)個(gè)異常啥的,竟然默默的就這樣了,原理以后再解。

解決辦法就是需要postMessage的事件寫到iframe的load事件中,代碼如下:

getDataAndPost() {
    requestData().then(res => {
      this.$refs.iframe.contentWindow.postMessage(res, "*")
    }).catch(function(err) {
      console.log(err)
    })
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53276.html

相關(guān)文章

  • 前端--iframe爬坑記錄

    摘要:且中沒(méi)有緩存這些消息。查閱了很多資料,后來(lái)發(fā)現(xiàn)這又是一坑。在沒(méi)有加載完成的情況下,消息自然是發(fā)不到的。解決辦法就是需要的事件寫到的事件中,代碼如下 1、iframe通信 由于項(xiàng)目中有用到vue嵌入靜態(tài)頁(yè)面實(shí)現(xiàn)功能,vue頁(yè)面和普通H5頁(yè)面通信就是個(gè)問(wèn)題。這篇文章寫得很詳細(xì)https://segmentfault.com/a/11... 但是在開(kāi)發(fā)過(guò)程中還是遇到了一些問(wèn)題,比如:ifra...

    CntChen 評(píng)論0 收藏0
  • 前端爬坑日記之vue內(nèi)嵌iframe并跨域通信

    摘要:由于該項(xiàng)目是基于原本的安卓,做的微信,所以原來(lái)的使用的頁(yè)面現(xiàn)在需要在中實(shí)現(xiàn),那就是使用查看了很多很多文檔,其中這一篇是很有價(jià)值的下面將天的爬坑最終以問(wèn)答的方式總結(jié)如下組件中如何引入如何獲取對(duì)象以及內(nèi)的對(duì)象如何向內(nèi)傳送信息內(nèi)如何向外部發(fā)送信息 由于該項(xiàng)目是基于原本的安卓app,做的微信h5,所以原來(lái)的使用webview的頁(yè)面現(xiàn)在需要在vue中實(shí)現(xiàn),那就是使用iframe查看了很多很多文檔...

    dreambei 評(píng)論0 收藏0
  • 初入 Flutter 的爬坑過(guò)程(Windows10)

    摘要:最近入坑在此過(guò)程遇到一些一般教程沒(méi)有注意的問(wèn)題,由此記錄一下。教程看的是技術(shù)胖的免費(fèi)視頻技術(shù)胖教程。但對(duì)我這種半路出家的前端來(lái)說(shuō),打過(guò)幾次也沒(méi)成功,又不能不學(xué),只能在網(wǎng)上找解決方法。 最近入坑Fultter,在此過(guò)程遇到一些一般教程沒(méi)有注意的問(wèn)題,由此記錄一下。教程看的是技術(shù)胖的免費(fèi)視頻 技術(shù)胖Fultter教程。一般情況下按照此教程是可以慢慢把開(kāi)發(fā)環(huán)境搭好的,但其中遇到如下問(wèn)題:1....

    IamDLY 評(píng)論0 收藏0
  • peewee爬坑

    摘要:代碼示例用戶基本信息用戶名在視圖函數(shù)更新數(shù)據(jù)更新只有調(diào)用字段的值才會(huì)在改變項(xiàng)目使用的,使用了語(yǔ)法數(shù)據(jù)庫(kù)遷移管理,文檔,文檔 peewee update_time字段爬坑 SQLalchemy中BaseModel定義: # -*- coding:utf-8 -*- from datetime import datetime from sqlalchemy import Column, D...

    ashe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<