Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写内置JavaScript对象上的成员_Javascript_Client Side - Fatal编程技术网

重写内置JavaScript对象上的成员

重写内置JavaScript对象上的成员,javascript,client-side,Javascript,Client Side,我想覆盖所有html元素的offsetParent成员的默认行为。如果可能的话,我想这样做: // For <div id="foo"></div> var oFooElem = document.getElementById("foo"); oFooElem._offsetParent = oFooElem.offsetParent; oFooElem.prototype.offsetParent = function() { window.status = '

我想覆盖所有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;
};
//用于
var of ooelem=document.getElementById(“foo”);
OFOELEM._offsetParent=OFOELEM.offsetParent;
oFooElem.prototype.offsetParent=函数(){
window.status='offsetParent called';
返回此项。_offsetParent;
};
这可能吗?如果是这样,请张贴更正后的代码示例。谢谢

更新:


@有些人感谢你的帮助。听起来这是不可能的。如果您感兴趣,我已经用一种新的方式详细介绍了引发这个问题的问题。

据我所知,这是不可能的。 在firefox中,我得到一个异常“设置一个只有getter的属性”,即给出错误,Chrome给出错误,但在Opera中它可以工作(如果我在元素上分配它,而不是在原型上分配它)

但你还有一个问题。offsetParent不是函数,因此它永远不会像函数一样被调用,您的警报也永远不会发生。在opera(我找到的唯一可以替换它的浏览器)中,您只能重新获得该功能

但是,您可以添加一个新函数(将在Firefox、Chrome和Opera中工作,但在IE中不工作,因为IE没有构造函数属性):

更新 通过阅读您的描述,我看到了您的错误:

  • 您将获得对该对象的引用 称为myInnerContent
  • 替换外部标记的内容时,可以从DOM中删除该对象
  • 您尝试从旧对象中获取父对象,该对象是孤立的,并且 不再在DOM中。IE给你一个错误,Firefox给你空值

  • 您的页面上已经有了解决方案:保存对象的名称。或者,您可以选择在更新内容时更新全局变量,或者仅更新内部div的innerHTML。

    据我所知,这是不可能的。 在firefox中,我得到一个异常“设置一个只有getter的属性”,即给出错误,Chrome给出错误,但在Opera中它可以工作(如果我在元素上分配它,而不是在原型上分配它)

    但你还有一个问题。offsetParent不是函数,因此它永远不会像函数一样被调用,您的警报也永远不会发生。在opera(我找到的唯一可以替换它的浏览器)中,您只能重新获得该功能

    但是,您可以添加一个新函数(将在Firefox、Chrome和Opera中工作,但在IE中不工作,因为IE没有构造函数属性):

    更新 通过阅读您的描述,我看到了您的错误:

  • 您将获得对该对象的引用 称为myInnerContent
  • 替换外部标记的内容时,可以从DOM中删除该对象
  • 您尝试从旧对象中获取父对象,该对象是孤立的,并且 不再在DOM中。IE给你一个错误,Firefox给你空值

  • 您的页面上已经有了解决方案:保存对象的名称。或者,您可以选择在更新内容时更新全局变量,或者只更新内部div的innerHTML。

    我在firefox中尝试时遇到异常“WrappedNative prototype对象上的非法操作”。您不能在offsetParent属性AFAIK上执行此操作。你希望完成什么?e、 你是不是一直在试图得到一个真正的上/左坐标?我希望能彻底解决这个问题@CodeChef:我更新了我的答案,并在另一个网站上发布了回复。当我在firefox中尝试时,我得到异常“WrappedNative prototype对象上的非法操作”。你不能在offsetParent属性AFAIK上这样做。你希望完成什么?e、 你是不是一直在试图得到一个真正的上/左坐标?我希望能彻底解决这个问题@CodeChef:我更新了我的答案,并在另一个网站上发布了回复。
    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();