Safari javascript错误,试图定义“;删除“;元素方法
Safari javascript error trying to define "remove" Element method
我的个人库中有几个定义,其中一个在Safari:中生成错误
Object.defineProperty(Element.prototype, "remove", {
enumerable: false,
configurable: false,
writable: false,
value: function(){
this.parentElement.removeChild(this);
}
});
错误:TypeError:正在尝试更改不可配置属性的可枚举属性。
我不明白这个短语的确切含义,在FireFox中,这个错误不会发生。
消息显示:
1) Element.prototype已经具有属性remove
。
2) 此属性的configurable
-属性设置为false
。这意味着:属性remove
无论如何都是不可变的。
评估该尝试:
Object.getOwnPropertyDescriptor(Element.prototype, 'remove');
有些浏览器在Element.prototype
上没有remove
,那么您的代码就可以工作了。有些浏览器有,并且configurable
设置为true
,那么它也可以工作,并且您覆盖内建属性。
作为旁白:属性enumerable
、configurable
和writable
默认为false
,只有在希望它们为true
时才必须声明它们。
第二个旁白:在内置原型中乱搞不是一个好主意。
最后一点:我的Safari(5.1.7)不再有Element.prototype.remove了,你的代码也能正常工作。
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素