当在chrome,firefox中执行以下代码时,不会出现错误。但是Safari会抛出TypeError:尝试更改不可配置属性的可配置属性。 我不明白src是不可配置的,那么为什么不会出现chrome和firefox的错误。
Object.defineProperty(iframe, 'src', {
writable: false, configurable: true
});
Safari版本11.0.1
PS - 我知道更改现有的不可配置属性会引发此错误,但为什么不是chrome和firefox
答案 0 :(得分:0)
我不明白src是不可配置的,为什么不会出现chrome和firefox的错误
因为不同的浏览器以不同的方式实现DOM。 Chrome和Firefox似乎不会将src
标记为不可配置。 Safari显然确实如此。另请注意,在Chrome(至少)上,src
属性是继承的并且具有getter / setter,因此在defineProperty
实例上调用iframe
将创建该实例上的新属性,而不是修改以前从原型继承的属性。 (我没有检查Firefox或Safari。)
如果您想与Safari兼容,则需要以不同的方式解决您的基本要求。