如何覆盖javascript's克隆节点
How do I override javascript's cloneNode?
这就是我目前所拥有的:http://jsfiddle.net/beCVL/5/
这就是我试图覆盖默认cloneNode的方式:Object.defineProperty(Object.prototype,"cloneNode"{get:cloneNode2,集合:克隆节点2});
但它不起作用,所以,我认为Object.prototype没有cloneNode,但Element.prototype也没有。
那么,假设我的方法是正确的,我需要使用哪个类来覆盖cloneNode?
它是Node.prototype
的一个属性https://developer.mozilla.org/En/DOM/Node.cloneNode
Node.prototype.cloneNode = function() {}
然而,修改内置对象可能会在将来给你带来悲伤。如果可能的话,您应该创建一个不同的函数并使用它,这样,使用cloneNode
的现有代码就不会中断。
尝试使用:
Node.prototype.cloneNode = cloneNode2;
Object.defineProperty
不用于此目的。这里有一个使用它的例子:
var o = {};
Object.defineProperty(o, 'blah', {
'get': function () { return 'asdf'; },
'set': function (x) { alert(x); }
});
alert(o.blah); // alerts 'asdf'
o.blah = 'fdsa'; // alerts 'fdsa'
显然,这只适用于Chrome。
为了解决实际问题,它应该足够简单,只需用等效的十六进制代码替换RGB代码。
function decToHex(a) {
return ('00' + (+a).toString(16)).substr(-2);
}
function replaceRGB(str) {
return str.replace(/rgb'(('d{1,3}), ('d{1,3}), ('d{1,3})')/, function (_, r, g, b) {
return "#" + decToHex(r) + decToHex(g) + decToHex(b);
});
}
replaceRGB("color: rgb(255, 0, 0)") // "color: #ff0000"
这一系列的fiddle正在进行中,但它重新实现了cloneNode的功能。http://jsfiddle.net/beCVL/19/
截至美国东部时间4月4日上午10:53,它需要使用IE,因为IE没有Node对象。
注意,在IE中,原型函数不能被覆盖。因此,cloneNode的所有实例都必须替换为一个函数,该函数确定要使用哪个版本的cloneNode。
- 将DOM节点值与字符串Javascript进行比较
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- JavaScript选择器:查找包含具有特定属性的子体的节点
- Javascript,将文本添加到具有现有文本节点的元素中
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- 使用TreeWalker检索非Javascript文本节点
- 如何使用javascript操作SVG节点,使其在MS Edge中工作
- 使用jQuery+Javascript识别一个空文本节点
- Protocol Buffers byte[] 数组到节点 Javascript 缓冲区
- 使用节点javascript的意外令牌ILLEGAL
- 获取特定类型的第一个子节点-JavaScript
- 嵌入式节点/javascript沙箱
- 节点JavaScript-十进制字符串到整数
- 删除特定的xml节点Javascript
- MySQL格式的节点JavaScript时间戳
- 计算节点/ JavaScript MySQL回调中的错误实例
- 节俭节点javascript命名空间
- 获取对象节点javascript的值
- 节点JavaScript上下文共享内置原型
- 子节点的子节点Javascript DOM