[英]Override members on a built-in JavaScript object
我想覆盖所有html元素的offsetParent成员的默认行为。 如果可能的话,我想做这样的事情:
// For <div id="foo"></div>
var oFooElem = document.getElementById("foo");
oFooElem._offsetParent = oFooElem.offsetParent;
oFooElem.prototype.offsetParent = function() {
window.status = 'offsetParent called.';
return this._offsetParent;
};
这有可能吗? 如果是这样,请发布更正的代码示例。 谢谢!
更新:
据我所知这是不可能的。 在firefox中,出现“设置仅具有getter的属性”的异常,IE给出了错误,Chrome给出了错误,但是在Opera中,它起作用了(如果我将其分配给元素,而不是原型)!
但是你还有另一个问题。 offsetParent不是函数,因此永远不会像函数那样被调用,也不会发生警报。 在Opera(我找到的唯一可以替换它的浏览器)中,您只能获得该函数。
但是,您可以添加一个新功能(将在Firefox,Chrome和Opera中运行,但在IE中则无效,因为IE没有构造函数属性):
var e = document.getElementById("mydiv"); //Get a div element
//Adds a _offsetParent function to all DIV elements.
e.constructor.prototype._offsetParent=function(){
alert("offset parent called"); return this.offsetParent;
};
e._offsetParent();
您的页面上已经有了解决方案:保存对象的名称。 (可选)您可以选择在更新内容时更新全局变量,或仅更新内部div的innerHTML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.