在chrome,firefox中执行以下代码时,不会出现错误。但是,Safari会引发TypeError:试图更改unconfigurable属性的可配置属性。
我不明白src是否不可配置,那么为什么chrome和firefox不会出现错误。

Object.defineProperty(iframe, 'src', {
    writable: false, configurable: true
});


Safari版本11.0.1
PS-我知道更改现有的不可配置属性会引发此错误,但是为什么不使用chrome和firefox

最佳答案

我不明白src是否不可配置,那么为什么Chrome和Firefox不会出现错误


因为不同的浏览器以不同的方式实现DOM。 Chrome和Firefox似乎没有将src标记为不可配置。 Safari显然可以。另请注意,在Chrome上(至少),src属性是继承的并且具有getter / setter,因此在defineProperty实例上调用iframe会在该实例上创建一个新属性,而不是修改一个以前从原型继承的。 (我没有检查Firefox或Safari。)

如果要与Safari兼容,则需要以其他方式解决您的基本要求。

07-24 09:49