asp.net – 要解决的JavaScript难题:window.confirm = divConfirm(strMessage)

前端之家收集整理的这篇文章主要介绍了asp.net – 要解决的JavaScript难题:window.confirm = divConfirm(strMessage)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
场景是:旧网站已经编写了很多JS代码.如果用户想要将所有警报消息更改为使用JQuery,YUI,Prototype等非常常见的新时代基于Div的警报.
主要有树JS对话框
警惕

要改变它的简单,我们只需编写新的函数,它将显示div弹出窗口并显示消息,然后覆盖window.alert

function showDivAlert(strMessage){
// div弹出逻辑和代码
}

window.alert = showDivAlert;

提示

这也很容易编写函数来接受字符串并显示输入值的文本框.现在返回操作基于点击“确定”按钮,这里的生活很简单.

function shoDivPromp(strMessage){
// div弹出以显示文本框并接受来自用户的输入
}
window.prompt = shoDivPromp;

3.确认

现在,上面两个很容易覆盖和修改默认对话框,但确认并不复杂.
但是,默认JS确认对话框会停止JS执行,当用户单击“确定”或“取消”执行时,通过确定返回值(true / false)来恢复执行.但是如果我们用户div弹出,则执行不会停止,这是个问题.我们仍然可以实现确认,但在这种情况下,我们必须绑定OK和CANCEL情况的方法,这些方法将附加到OK和CANCEL按钮.有了这个功能,签名就像.
function newConfirm(msg,fun OkAction(),fun CancelAction)
现在这是一个问题,这不能帮助我改变网站上的确认对话框,就像我们使用alert();

我不确定它是否可能实现,但我认为可以使用一些JS模式.所以,如果有可能请告诉我.

解决方法

Now this is problem that this cant help me change the confirm dialog across the site as we did with alert();

那是对的.在本机JavaScript中无法重现警报/确认/提示功能的同步特性.有一个非标准的方法showModalDialog可以使用一个单独的弹出文档来完成它,但它并不是所有浏览器都支持它,它通常被认为是非常不受欢迎的.

因此,插件替换策略不会起作用.您将不得不在脚本的其余部分中更改您调用这些方法的每个位置.

通常的模式是使用内联匿名函数来执行它,以使用闭包来保留局部变量,例如.更换:

function buttonclick() {
    var id= this.id;
    if (confirm('Are you sure you want to frob '+id+'?'))
        frob(id);
    wipe(id);
}

有:

function buttonclick() {
    var id= this.id;
    myConfirm('Are you sure you want to frob '+id+'?',function(confirmed) {
        if (confirmed)
            frob(id);
        wipe(id);
    });
}

如果需要保留它,则需要查看另一个嵌套闭包或function.bind来执行此操作.如果你有一个在循环中确认的话,事情会变得更加困难.

显然,您还必须确保在确认框启动时关键的全局状态不会发生变化.通常,通过使用叠加层覆盖页面的其余部分来阻止点击通过,可以最大限度地降低风险.但是,如果你有超时,他们仍然可以开火.

原文链接:https://www.f2er.com/aspnet/251661.html

猜你在找的asp.Net相关文章