How to overwrite the method in Javascript

本文介绍了一种在Microsoft Office SharePoint Server (MOSS)环境中覆盖原生JavaScript函数的方法。为了解决因加载顺序导致的覆盖失败问题,文章提供了一个递归延时检查的解决方案,确保目标函数被成功替换。

我最近在做的一个产品是嵌入在MOSS之中,但自2007开始就发现微软其中一些javascript函数写的有问题或者是不符合我们的需求,为此,我们需要覆盖这些native函数。

譬如有一个native方法叫mtd1,如果要覆盖它,主要的做法是使用 window.mtd1 = function { ... your logic .... };  但有时候为了某些需求,微软的js文件加载时间会比我们自己的晚,这样其实我们并不能正常的覆盖这个函数。 此问题的解决方法是使用

window.setTimeout(function()
    {
      window.mtd1 = function { ... your logic .... };
    }, 100);

上边的100是个时间(毫秒),实际使用时候会发现该时间并不好控制,会根据网络情况、机器情况而不同,也能设太大了,以免执行过晚。

依然有解决办法,看一下示例

function setOverrideFunction()
{
 if(window.mtd1!= null)
 {
   window.mtd1 = function { ... your logic .... };
 }
 else
 {
   window.setTimeout(function()
   {
      setOverrideFunction()
   },100);
 }
}

window.setTimeout(function()
    {
      setOverrideFunction();
    }, 100);

OK,完美解决....

转载于:https://www.cnblogs.com/xioxu/archive/2010/07/06/1772262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值