在编写Node.prototype.appendChild(obj)时,我编写了以下代码来警告消息。
var _appendChild = Node.prototype.appendChild;
Node.prototype.appendChild = function(object){
alert("append");
return _appendChild.apply(this,[object]); ;
};
它在IE8中不起作用。
我已阅读此链接,其中答案表示原型函数无法在IE中重写
How do I override javascript's cloneNode?
但我还是想问一下是否有任何工作要做我想做的事。
由于
答案 0 :(得分:3)
您无法在IE8中扩展Node,但您可以扩展HTMLDocument.prototype和Element.prototype。
A link to Microsoft's documentation
function _MS_HTML5_getElementsByClassName(classList){
var tokens= classList.split(" ");
var staticNodeList= this.querySelectorAll("." + tokens[0]);
for(var i= 1; i<tokens.length; i++){
var tempList= this.querySelectorAll("." + tokens[i]);
var resultList= new Array();
for(var finalIter= 0; finalIter<staticNodeList.length; finalIter++){
var found= false;
for(var tempIter= 0; tempIter<tempList.length; tempIter++){
if(staticNodeList[finalIter]== tempList[tempIter]){
found= true;
break;
}
}
if(found){
resultList.push(staticNodeList[finalIter]);
}
}
staticNodeList= resultList;
}
return staticNodeList;
}
if(!document.getElementsByClassName && Element.prototype){
HTMLDocument.prototype.getElementsByClassName= _MS_HTML5_getElementsByClassName;
Element.prototype.getElementsByClassName= _MS_HTML5_getElementsByClassName;
}
答案 1 :(得分:1)
谢谢kennebec
最后我发现我无法实现它只是因为它在怪癖模式下运行... 我写了一个其他人可能感兴趣的例子。
var elementPrototype = typeof HTMLElement !== "undefined"
? HTMLElement.prototype : Element.prototype;
var _appendChild = elementPrototype.appendChild;
elementPrototype.appendChild = function(content){
//Do what you want-----
alert("Append Child!");
//---------------------
return _appendChild(content);
}