我的网页加载的一个javascript文件有此调用
window.setTimeout(function() {
self.MakeWaterFall(self)
}, 500);
该.js文件托管在其他服务器上,并加载在网页上,类似于从CDN加载的许多js库,并且该文件在500ms后具有“硬编码”的setTimeout调用
现在,我希望'MakeWaterFall'
函数稍稍在页面上运行
我想让它在自定义触发器触发后运行,在ajax数据下线并在页面上呈现帖子之后。
这是绑定触发器,我需要将MakeWaterFall fn'移动到..
$(window).bind( 'grid:items:added' , function(){
// .. some custom events on elements +
MakeWaterFall(window);
} ) ;
这个问题本质上就像'我可以在window.setTimeout运行并阻止一个规范调用并将其移动到其他地方,后者在代码中吗?
也不是说我有其他代码通过window.setTimeout代码在代码中的其他地方运行,我知道糟透了:(
感谢
答案 0 :(得分:0)
使用这样的回调函数:
function myFunction(callback){
myFunction1();
if(typeof(callback) === "function()"){
myFunction2();
}}"
答案 1 :(得分:0)
好的,我找到了一个解决方案,实际上非常简单..它包含了这个步骤:
1)我确保在托管CDN问题之前我先在页面上加载了custom.js
文件。 js文件出现在页面上(其中有setTimeout
)
2)我保留了原生功能并制作了自定义功能并执行了此操作:
// save original setTimeout function to savedST
window.savedST = window.setTimeout ;
// define custom window.setTimeout function and hook to it
window.setTimeout = function(a, b){
// I'm testing if this calls waterfall fn.. then bounce that f() to other binded event
if ( a.toString().indexOf( 'MakeWaterFall' ) > -1 ){
$(window).bind( 'grid:items:added', function(){
a();
});
} else {
// run normal or original setTimeout as usual
savedST(a, b);
}
} ;
我确定这可以帮助那些需要覆盖" setTimeout"和/或" setInterval",本机窗口函数
欢呼,k