TypeError:尝试更改iframe的src的不可配置属性的可配置属性

时间:2018-05-07 16:55:03

标签: javascript html object ecmascript-5

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

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

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

1 个答案:

答案 0 :(得分:0)

  

我不明白src是不可配置的,为什么不会出现chrome和firefox的错误

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

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