当在chrome,firefox中执行下面的代码时,不会出现错误。但是safari抛出了TypeError:试图更改不可配置属性的可配置属性。我不明白src是否是不可配置的,那么为什么chrome和firefox没有出现错误。
Object.defineProperty(iframe, 'src', {
writable: false, configurable: true
});Safari版本11.0.1
PS -我知道更改现有的不可配置属性会引发此错误,但是为什么不是chrome和firefox?
发布于 2018-05-07 16:57:01
我不明白src是否是不可配置的,那么为什么chrome和firefox不出错呢?
因为不同的浏览器以不同的方式实现DOM。看起来Chrome和火狐并没有标记src不可配置。很明显是野生动物。还请注意,至少在Chrome上,src属性是继承的,并且具有getter/setter,因此对iframe实例调用defineProperty将在该实例上创建一个新属性,而不是修改以前从原型继承的属性的行为。(我没有检查Firefox或Safari。)
如果您希望与Safari兼容,则需要以不同的方式处理基本需求。
https://stackoverflow.com/questions/50219059
复制相似问题