How to overwrite the method in 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,完美解决....