2012-07-25 52 views
1

被覆盖JavaScript方法我重写了一些对Element原型方法,这样我就可以在自定义的钩子添加像这样:恢复在IE8

Element.prototype._method = Element.prototype.method; 
Element.prototype.method = function(){ 
    this._method.apply(this, arguments); 
    // custom callback 
} 

在某一点上,我要恢复原来的方法,所以我做的:

Element.prototype.method = Element.prototype._method; 

然而,当method元素称为节点上,它似乎抛出一个Invalid procedure call or argument错误在IE8。我是否错误地恢复原始方法?

+0

+1因为这是一个有趣的问题。但是我怀疑真正的答案是重写代码并以不同的方式做事。 – Spudley 2012-07-25 06:24:38

回答

0

看来IE8有这个问题,并不是很容易解决,但你可以试试deleteElement.prototype恢复覆盖。

var old = Element.prototype.getElementsByTagName; 
Element.prototype.getElementsByTagName = old; 
// alert(document.body.getElementsByTagName('script').length); // this throws Error 
delete Element.prototype.getElementsByTagName; 
alert(document.body.getElementsByTagName('script').length); // Now it works as expected 
+0

太好了!谢谢! – user730569 2012-07-25 06:49:05