我正在使用Visual Studio 2010来覆盖带有自定义模式框的JS警告框。我使用了以下内容:
(function() {
var proxied = window.alert;
window.alert = function(txt) {
//myFuntion(txt);
return proxied.apply(this, arguments);
};
})();
这个Js功能导致我的自定义弹出和放大要显示的警告框。来源taken from here 而
window.alert = function(txt) {
//myFuntion(txt);
};
适用于aspx页面脚本。 问题是使用RegisterStartupScript后面的代码动态添加的Js警报和RegisterClientScriptBlock仍然显示本机警报框。如何解决这个问题。
答案 0 :(得分:0)
您提供的第一个代码示例中的代理方法旨在向事件添加功能,而不是替换它。发生的是当调用alert函数时,它将调用你的函数,然后调用标准的window.alert函数。 (Codepen demonstration)
(function() {
var proxied = window.alert; // stores the original window.alert function
window.alert = function(txt) { // sets a new window.alert
myfunction(); // calls your function
return proxied.apply(this, arguments); // calls the original window.alert function
};
})();
第二种方法适合您,因为它不使用代理,它完全取代了window.alert函数(Codepen demonstration)
window.alert = function(txt) { // sets a new window.alert function
myfunction(); // calls your function
};
问题很可能是RegisterStartupScript和RegisterClientScriptBlock在运行更改警报功能的脚本之前渲染其脚本。