亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue中跨標(biāo)簽通信詳解

 更新時(shí)間:2024年01月05日 08:19:20   作者:好大貓  
這篇文章主要為大家詳細(xì)介紹了介紹了Vue中跨標(biāo)簽通信的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

最近看到別人的 后臺管理系統(tǒng) 做了這樣一個(gè)功能:

  • 當(dāng)在列表頁時(shí),點(diǎn)擊列表對應(yīng)的修改按鈕,瀏覽器打開一個(gè)新的 tab 頁
  • 在新的 tab 頁上是一個(gè)詳情頁,當(dāng)修改里面的詳情數(shù)據(jù)后,點(diǎn)擊提交
  • 列表頁當(dāng)發(fā)現(xiàn)詳情頁面提交后,會重新請求數(shù)據(jù)

感覺這個(gè)功能很有趣,找了幾個(gè)比較好的方案,做一個(gè)記錄

storage

storage 可以跨頁面觸發(fā)事件,下面是 MDN 關(guān)于 storageEvent 的介紹

所以我們可以根據(jù) storage 的這個(gè)特性來做

我們使用一個(gè)按鈕模擬 列表頁面的修改按鈕

點(diǎn)擊這個(gè)按鈕,跳轉(zhuǎn)到 詳情頁面

使用 window.open 可以打開一個(gè)新的 tab,使用 vue-router 只能在頁面內(nèi)跳轉(zhuǎn)

 doClick() {
    window.open("http://localhost:8080/detail", "_blank")
 }

mounted 中編寫監(jiān)聽函數(shù)

 window.addEventListener('storage', function (event) {
     if (event.key === 'shareData') {
       const newData = event.newValue;
       console.log('收到的更新數(shù)據(jù):', newData);
     }
 });

在詳情頁面,我們使用 input 表示詳情 form, 一個(gè)按鈕表示 提交

在修改中只需使用 storage 保存輸入框里面的值即可(輸入框已經(jīng)使用v-model綁定在變量num上)

change() {
  localStorage.setItem('shareData', this.num);
 }  

當(dāng)點(diǎn)擊修改時(shí),可以看到 列表中的監(jiān)聽函數(shù)生效

這個(gè) this.num 只是模擬,實(shí)際上只要 stoage 不重復(fù)即可觸發(fā)監(jiān)聽,等觸發(fā)監(jiān)聽后就可以重新發(fā)起請求

BroadcastChannel

BroadcastChannel是一個(gè)專門跨標(biāo)簽通信的解決辦法

核心在于兩個(gè) tab 使用同一個(gè) BroadcastChannel name,是頻道的唯一標(biāo)識

新建 BroadcastChannel.js,目的是為了多個(gè) tab 使用同一個(gè)BroadcastChannel.name,可以在使用通信結(jié)束過后斷開其與對應(yīng)頻道的關(guān)聯(lián)

BroadcastChannel.js

const channelObj = new BroadcastChannel('BroadcastChannel');

export {
  channelObj
}

在列表頁中的 mounted 函數(shù)中監(jiān)聽

import {channelObj} from "./BroadcastChannel"

 channelObj.addEventListener("message", function (event) {
      const newData = event.data;
      console.log('收到的更新數(shù)據(jù):', newData);
  })

我們在詳情頁面使用 postMessage 發(fā)送消息

import {channelObj} from "./BroadcastChannel"

 change() {
    // 發(fā)送消息
    channelObj.postMessage(this.num);
 }

同樣的也可以收到更新后的數(shù)據(jù),和 storage 不同的是,this.num 可以為相同的值

visibilitychange(補(bǔ)充:不涉及標(biāo)簽通信)

類似于小程序中的 onShow 方法,當(dāng)當(dāng)前 tab 頁面展示隱藏時(shí)會觸發(fā)這個(gè)事件,同樣的,在切換 tab 時(shí)也可以觸發(fā)這個(gè)事件

 window.addEventListener("visibilitychange", () => {
      if(document.visibilityState === "visible"){
        console.log("頁面可見")
      }else{
        console.log("頁面不可見")
      }
 });

在頁面可見時(shí)就會調(diào)用更新列表,這種方法的缺點(diǎn)是不論是否點(diǎn)擊了詳情提交按鈕都會執(zhí)行,不涉及標(biāo)簽通信

到此這篇關(guān)于Vue中跨標(biāo)簽通信詳解的文章就介紹到這了,更多相關(guān)Vue跨標(biāo)簽通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue之ele多級聯(lián)組件的使用方法詳解

    vue之ele多級聯(lián)組件的使用方法詳解

    這篇文章為大家詳細(xì)主要介紹了vue之ele多級聯(lián)組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue中實(shí)現(xiàn)Monaco Editor自定義提示功能

    vue中實(shí)現(xiàn)Monaco Editor自定義提示功能

    最近小編接到一個(gè)項(xiàng)目,需要在瀏覽器的ide中支持自定義提示功能,接下來通過本文給大家介紹在vue中實(shí)現(xiàn)Monaco Editor自定義提示功能,需要的朋友可以參考下
    2019-07-07
  • vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤

    vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue綁定設(shè)置屬性的多種方式(5)

    vue綁定設(shè)置屬性的多種方式(5)

    這篇文章主要為大家詳細(xì)介紹了vue綁定設(shè)置屬性的多種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 關(guān)于vue2強(qiáng)制刷新,解決頁面不會重新渲染的問題

    關(guān)于vue2強(qiáng)制刷新,解決頁面不會重新渲染的問題

    今天小編就為大家分享一篇關(guān)于vue2強(qiáng)制刷新,解決頁面不會重新渲染的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue中音頻wavesurfer.js的使用方法

    vue中音頻wavesurfer.js的使用方法

    這篇文章主要為大家詳細(xì)介紹了vue中音頻wavesurfer.js的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 基于Vue.js 實(shí)現(xiàn)簡易拖拽指令

    基于Vue.js 實(shí)現(xiàn)簡易拖拽指令

    在 Vue.js 中,我們可以通過自定義指令的方式來實(shí)現(xiàn)拖拽功能,使得代碼更加模塊化和可復(fù)用,本文將介紹如何基于 Vue.js 實(shí)現(xiàn)一個(gè)簡易的拖拽指令,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Vue的模板語法以及實(shí)戰(zhàn)案例

    Vue的模板語法以及實(shí)戰(zhàn)案例

    Vue使用了基于HTML的模板語法,允許開發(fā)者聲明式地將DOM綁定至底層Vue實(shí)例的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue的模板語法以及案例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 通過vue寫一個(gè)瀑布流插件代碼實(shí)例

    通過vue寫一個(gè)瀑布流插件代碼實(shí)例

    這篇文章主要介紹了通過vue寫一個(gè)瀑布流插件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 解決Vuepress碼云部署及自動(dòng)跳轉(zhuǎn)404的問題

    解決Vuepress碼云部署及自動(dòng)跳轉(zhuǎn)404的問題

    這篇文章主要介紹了解決Vuepress碼云部署及自動(dòng)跳轉(zhuǎn)404的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論