这就是我目前所拥有的:http://jsfiddle.net/beCVL/5/
这就是我试图覆盖默认cloneNode: Object.defineProperty(Object.prototype,"cloneNode",{ get: cloneNode2,set: cloneNode2 })的方法;
但是它不工作,所以,我认为Object.prototype没有cloneNode,但Element.prototype也没有。
那么,假设我的方法是正确的,我需要使用哪个类来覆盖cloneNode呢?
发布于 2012-04-04 22:53:27
这一系列的小提琴还在开发中,但它重新实现了cloneNode的功能。http://jsfiddle.net/beCVL/19/
在美国东部时间4月4日上午10:53,它需要与IE协同工作,因为IE没有Node对象。
请注意,在IE中,原型函数不能被覆盖。因此,必须用一个确定要使用哪个版本的cloneNode的函数来替换cloneNode的所有实例。
发布于 2012-04-04 05:36:00
尝试使用:
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"发布于 2012-04-04 05:39:22
这是Node.prototype https://developer.mozilla.org/En/DOM/Node.cloneNode的财产
Node.prototype.cloneNode = function() {}
然而,修改内置对象可能会在将来给您带来痛苦。如果可能,您应该创建一个不同的函数并使用它,这样就不会破坏使用cloneNode的现有代码。
https://stackoverflow.com/questions/10001694
复制相似问题