誤認爲v-html存在兼容性問題

需求:最近在用vue做一個新聞的應用程序,其中詳情頁可能存在後臺傳回的html字符串,需要使用v-html解析。
問題:由於詳情頁不止html一種類型,在結構上並不單一(存在非html類型及附件),導致最後出現的情況是,在windows,mac,
Android上都是好的,調試發現對應的dom都生成了,但是有些超出手機寬度的內容在ios系統上完全不顯示,主要是我加上了橫向滾動
overflow-x:auto,於是誤認爲是數據問題或v-html解析存在兼容性問題,找了很久才發現是頁面結構中把含有v-html的部分使用了
絕對定位,脫離了文檔流,可見ios對絕對定位加橫向滾動的支持不太好
實例:下面是詳情頁,可能是html或非html類型,html類型中可能存在表格,因爲表格是後臺編輯器生成的,寬度可能超出了手機的寬度

在這裏插入圖片描述
在這裏插入圖片描述

解決:將含有v-html部分的position:absolute去掉,並在頁面渲染後在詳情頁的每個table上加一個div(雖然vue並不建議操作dom),使裏面的table能夠橫向滾動
代碼:在調用接口獲取數據成功後立即執行
var that = this;
setTimeout(function () {
  that.$nextTick(()=>{
    //dom已更新
    var objArr = document.querySelectorAll('table')
    if(objArr.length > 0) {
      objArr.forEach(function (lable, index) {
        var ele = document.createElement('div')
        ele.className = 'table-con';
        lable.parentNode.replaceChild(ele, lable)
        ele.appendChild(lable)
      })
    }
  })
}, 2000)
對應的css:
.table-con{
  width: 100%;
  overflow-x: auto;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章