ios设备出现attempted-to-assign-to-readonly-property报错

attempted to assign to readonly property的中文解释为:尝试分配定义只读属性

let tablist = document.querySelectorAll('.div')
for (let i = 0; i < tablist.length; i++) {
    tablist[i].style = ''
}
// 或者
let dom = document.querySelector('.div')
dom.style = 'font-weight: 700;'

对于以上代码,在安卓和chrome浏览器中运行正常,但是在ios设备中可能(iphone6或safari10)会出现attempted to assign to readonly property的报错

这是为什么呢?可以了解为在获取dom后不能对style属性直接赋值,只能对style.属性名 = ‘’ 这种方式赋值。否则ios手机直接报错。

TrackJS指出,这个报错是一个 ios中webkit内核的bug(而且每个框架都以独特的方式遇到这个问题.

webkit bugs 也确认了该问题,而且每个框架都以独特的方式遇到这个问题,Angular以及vue.esm.js等。后来发现直接删除js开头的’use strict’;就不会报错了,但是这样js语法就不是严格模式了。

·

对上面的代码,如果你这样赋值就不会产生报错

let tablist = document.querySelectorAll('.div')
for (let i = 0; i < tablist.length; i++) {
    //tablist[i].style = ''  error
    tablist[i].removeAttribute('style')
}
// 或者
let dom = document.querySelector('.div')
//dom.style = 'font-weight: 700;'  error
dom.style.fontWeight = 700

·

参考文档:tuy博客

你可能感兴趣的:(attempted,to,assign,to,readonly,pro,error,js,前端,ios,javascript,safari,vue.js)