我有几个.js文件,都附加到某个页面。我正在添加到母版页的基础版负责在有Ajax女士活动时显示ajax加载器动画。以下是执行此操作的代码部分:
$(document).ready(function () {
if (isSysDefined()) {
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm) {
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
}
}
});
function BeginRequestHandler(sender, args) {
$('#ajax-loader').show();
}
function EndRequestHandler(sender, args) {
$('#ajax-loader').hide();
}
现在,我想在另一个文件中扩展BeginRequestHandler和EndRequestHandler。如果我只是重复上面的代码,但处理程序的实现不同,显然其中一个不会触发。
如何执行这两个处理程序?在“基础”处理程序结束时,我可以触发一些新事件,然后我可以在稍后阶段将它绑定到它,但实际上 - 这是唯一的方法吗?因为它似乎是hackish(以一种糟糕的方式)......
答案 0 :(得分:0)
是的,虽然仍然有点“hackish”,但是你需要存储对前一个函数的引用,然后在新函数中执行这个引用。
在您的外部文件中,有这样的代码:
var prevBeginRequestHandler = 0;
if (typeof BeginRequestHandler == "function")
prevBeginRequestHandler = BeginRequestHandler;
window.BeginRequestHandler = function() {
if (prevBeginRequestHandlero)
prevBeginRequestHandler();
alert("I am another function");
};
第二个功能也一样。
只需一件事 - 确保在第一次声明函数后包含该文件。