1

我覆盖了Element原型上的一些方法,所以我可以像这样添加一个自定义钩子:

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

在某些时候,我想恢复原来的方法,所以我这样做:

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

但是,当在节点上调用元素时,在 IE8 中method似乎会抛出错误。Invalid procedure call or argument我是否错误地恢复了原始方法?

4

1 回答 1

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
于 2012-07-25T06:25:29.783 回答