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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值