gpt4 book ai didi

asp.net - JavaScript拼图: window. confirm = divConfirm(strMessage)

转载 作者:搜寻专家 更新时间:2023-11-01 04:59:03 25 4
gpt4 key购买 nike

场景是:已经编写了大量 JS 代码的旧站点。如果用户想将所有警报消息更改为新时代基于 Jazzy Div 的警报,这在使用 JQuery、YUI、Prototype 等方面非常常见。
主要有树形JS对话框
1。警报

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


function showDivAlert(strMessage){ <br/>
//div popup logic and code <br/>
} <br/>
<br/>
window.alert = showDivAlert; <br/>

2。提示

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



function shoDivPromp(strMessage){ <br/>
//div pop up to show the text box and accept input from the user <br/>
} <br/>
window.prompt = shoDivPromp; <br/>

3。确认

现在上面两个很容易覆盖和修改默认对话框,但是确认很复杂。
然而,默认的 JS 确认对话框会停止 JS 执行,当用户单击“确定”或“取消”时,通过确定返回值(真/假)恢复执行。但是如果我们使用 div 弹出窗口,执行不会停止,这就是问题。
我们仍然可以实现确认,但在那种情况下,我们必须绑定(bind) 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);
});
}

如果您需要保留 this,您需要进一步查看嵌套闭包或 function.bind 来执行此操作。如果您在循环中调用 confirm,事情就会变得更加困难。

显然,您还必须确保在确认框打开时关键全局状态不会更改。通常,通过使用覆盖层将页面的其余部分变灰以阻止点击通过,可以最大限度地降低这种风险。但是,如果您有超时,它们仍然可以触发。

关于asp.net - JavaScript拼图: window. confirm = divConfirm(strMessage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com