<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      vue v-for 列表更新導致 iframe 刷新而狀態丟失的原因以及恢復狀態的方案

      因為當列表數據變化,vue 重新渲染列表時,會導致受影響的列表項的 DOM 從頁面移除,而 iframe 被移除后再添加回頁面一定會刷新。

      如果向列表的數據數組的開頭或中間插入元素,又或者移除元素,vue 會將操作位置對應的 DOM 元素和之后的 DOM 元素統統移除,然后在添加回去。

      沒看過 vue 源碼,但是可以推斷,這一過程可能是,先移除所有受影響的元素,然后再將可用的元素添加到合適的位置;這一過程也有可能是使用 Element.replaceWith() 完成的,而該 API 也會將 DOM 元素從頁面中移除。從頁面移除 iframe,iframe 的 contentWindow 會銷毀加載的內容,重新添加到頁面,contentWindow 會重新加載 iframe 指定的 src,這一來一回,就導致了 iframe 狀態丟失。

      基于 vue 這個更新列表 DOM 的原理,最好不在列表中使用 iframe。

      如果列表數據不變,或者將列表數據當作一個棧來使用,那么不會有 DOM 被移除后重新添加回頁面,這種情況下可以在列表中使用 iframe 。

      如果列表數據多變,不僅僅是只操作數據尾部,還會向列表其它位置進行插入或刪除操作,可以考慮通過窗口通信的方式來實現狀態的保存與恢復。

      1. 同域名的網頁,可以直接取得 iframe 的 contentWindow 對象,然后就可以讀取狀態了。contentWindow unload 的時候保存狀態,再將狀態附加到 iframe 的 src 屬性上,iframe 重新添加回頁面時,內部頁面通過 location.href 來恢復狀態。
      2. 跨域的頁面,使用 window.postMessage 來通信,contentWindow unload 的時候將其狀態發送給調用它的頁面,然后調用它的頁面將狀態數據格式化后附加到 iframe 的 src 屬性上。數據恢復的過程和同源網頁沒差。

      保存與恢復 iframe 狀態的做法還是有些復雜的,如果在 vue 列表中使用 iframe 是必要的,就好好設計一下 iframe 狀態的保存與恢復的功能。
      如果是不必要的,果斷放棄。

      posted @ 2024-09-06 00:36  鈺琪  閱讀(248)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 蜜臀人妻精品一区二区免费| 亚洲精品福利一区二区三区蜜桃| 午夜福利你懂的在线观看| 芳草地社区在线视频| 柞水县| 国产精成人品日日拍夜夜| 九九热免费在线播放视频| 中国亚州女人69内射少妇| 欧美福利在线| 日韩熟女乱综合一区二区| 亚洲色婷婷婷婷五月基地| 亚洲成av人片无码天堂下载| 欧美人成在线播放网站免费| 亚洲欧美偷国产日韩| 国产良妇出轨视频在线观看| 丁香五月网久久综合| 国模少妇无码一区二区三区| 亚洲av永久无码精品水牛影视| 免费一区二区无码东京热| 日韩免费无码视频一区二区三区| 日本一区二区三区黄色网| 久久久久久久久18禁秘| 婷婷色综合成人成人网小说| 国产精品不卡一区二区在线| 少妇被粗大的猛烈进出动视频| 久久成人国产精品免费软件| 精品人妻一区二区| 亚洲综合色区另类av| 久久午夜无码鲁丝片直播午夜精品| 日韩中文字幕v亚洲中文字幕| 亚洲精品成人久久久| 国产精品天天看天天狠| 亚洲中文字幕一区二区 | 欧美一区二区| 懂色AV| 亚洲中文字幕国产综合| 亚洲第一成年免费网站| 亚洲综合国产激情另类一区| 99精品国产综合久久久久五月天 | 好吊妞| 女同亚洲精品一区二区三|