重写javascript中window.confirm的行为


Posted in Javascript onOctober 21, 2012

javascript中window.confirm这个方法很好用,可以弹出一个确认对话框
重写javascript中window.confirm的行为
我们之所以弹出这个对话框,可能就是因为该操作很危险,所以要用户确认。但如果默认选择"确定",则可能违背了这个原则。
另外,confirm对话框的按钮都是固定在"确定"和"取消"这两个。可能有些时候也不是很直观。
所以,可以考虑用vbscript中的msgbox来改写这个行为。下面是一个范例

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title></title> 
<script> 
function deleteConfirm(msg) 
{ 
function window.confirm(str) 
{ 
str= str.replace(/\'/g, "'& chr(39) &'").replace(/\r\n/g, "'& VBCrLf &'"); 
execScript("n = msgbox('"+ str +"', 289, '删除框')", "vbscript"); 
return(n == 1); 
} 
return window.confirm(msg); 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:Button ID="deleteButton" runat="server" OnClientClick="javascript:return deleteConfirm('你确定要删除吗?')" Text="删除" 
onclick="deleteButton_Click" /> 
</div> 
</form> 
</body> 
</html>

关于msgbox 方法的具体细节,还可以参考下面的介绍

MsgBox 函数
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。
MsgBox(prompt[, buttons][, title][, helpfile, context])
参数
prompt
作为消息显示在对话框中的字符串表达式。prompt 的最大长度大约是 1024 个字符,这取决于所使用的字符的宽度。如果 prompt 中包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合 (Chr(13) & Chr(10)) 分隔各行。
Buttons
数值表达式,是表示指定显示按钮的数目和类型、使用的图标样式,默认按钮的标识以及消息框样式的数值的总和。有关数值,请参阅“设置”部分。如果省略,则buttons 的默认值为 0。
Title
显示在对话框标题栏中的字符串表达式。如果省略 title,则将应用程序的名称显示在标题栏中。
Helpfile
字符串表达式,用于标识为对话框提供上下文相关帮助的帮助文件。如果已提供helpfile,则必须提供 context。在 16 位系统平台上不可用。
Context
数值表达式,用于标识由帮助文件的作者指定给某个帮助主题的上下文编号。如果已提供 context,则必须提供 helpfile。在 16 位系统平台上不可用。
设置
buttons 参数可以有以下值: 

常数 描述
vbOKOnly 0 只显示确定按钮。
vbOKCancel 1 显示确定和取消按钮。
vbAbortRetryIgnore 2 显示放弃、重试和忽略按钮。
vbYesNoCancel 3 显示是、否和取消按钮。
vbYesNo 4 显示是和否按钮。
vbRetryCancel 5 显示重试和取消按钮。
vbCritical 16 显示临界信息图标。
vbQuestion 32 显示警告查询图标。
vbExclamation 48 显示警告消息图标。
vbInformation 64 显示信息消息图标。
vbDefaultButton1 0 第一个按钮为默认按钮。
vbDefaultButton2 256 第二个按钮为默认按钮。
vbDefaultButton3 512 第三个按钮为默认按钮。
vbDefaultButton4 768 第四个按钮为默认按钮。
vbApplicationModal 0 应用程序模式:用户必须响应消息框才能继续在当前应用程序中工作。
vbSystemModal 4096 系统模式:在用户响应消息框前,所有应用程序都被挂起。

第一组值 (0 - 5) 用于描述对话框中显示的按钮类型与数目;第二组值 (16, 32, 48, 64) 用于描述图标的样式;第三组值 (0, 256, 512) 用于确定默认按钮;而第四组值 (0, 4096) 则决定消息框的样式。在将这些数字相加以生成 buttons 参数值时,只能从每组值中取用一个数字。

返回值
MsgBox 函数有以下返回值:

常数 按钮
vbOK 1 确定
vbCancel 2 取消
vbAbort 3 放弃
vbRetry 4 重试
vbIgnore 5 忽略
vbYes 6
vbNo 7

说明
如果同时提供了 helpfile 和 context,则用户可以按 F1 键以查看与上下文相对应的帮助主题。

如果对话框显示取消按钮,则按 ESC 键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。

当MicroSoft Internet Explorer使用MsgBox函数时,任何对话框的标题总是包含"VBScript",以便于将其与标准对话框区别开来。

下面的例子演示了 MsgBox 函数的用法:

Dim MyVar 
MyVar = MsgBox ("Hello World!", 65, "MsgBox Example") 
' MyVar contains either 1 or 2, depending on which button is clicked
Javascript 相关文章推荐
Js中获取frames中的元素示例代码
Jul 30 Javascript
判断是否安装flash player及当前版本的JS代码
Aug 08 Javascript
js获取url参数代码实例分享(JS操作URL)
Dec 13 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
Vuex之理解state的用法实例
Apr 19 Javascript
vue-cli之router基本使用方法详解
Oct 17 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
Vuex入门到上手教程
Jun 20 Javascript
vue框架搭建之axios使用教程
Jul 11 Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 Javascript
js indexOf()定义和用法
Oct 21 #Javascript
javascript window.confirm确认 取消对话框实现代码小结
Oct 21 #Javascript
基于jquery DOM写的类似微博发布的效果
Oct 20 #Javascript
JS的replace方法介绍
Oct 20 #Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 #Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 #Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Oct 15 #Javascript
You might like
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python ftp上传文件
2016/02/13 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python Gabor滤波器讲解
2020/10/26 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
美国零售商店:Blue&Cream
2017/04/07 全球购物
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
绩效工资分配方案
2014/01/18 职场文书
部队万能检讨书
2014/02/20 职场文书
合作意向书范本
2014/03/31 职场文书
建筑工地质量标语
2014/06/12 职场文书
大学生入党自荐书
2015/03/05 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
创业计划书之水果店
2019/07/18 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript