误认为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存在兼容性问题_第1张图片
误认为v-html存在兼容性问题_第2张图片

解决:将含有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;
}

你可能感兴趣的:(前端,v-html,追加父节点)