整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

简要地教你使用HTML 5.2对话框

TML对话框已经停留了一段时间,但是直到最近,它还不是W3C推荐规范的一部分。既然主流浏览器已经开始支持对话元素,我们很可能会看到它被广泛使用。本文简要介绍了我们如何使用对话框,为什么需要新的元素以及如何使用它。

什么是对话框?

对话框是一种可用于多种方式的设计模式,包括但不限于:显示重要信息,请求用户选择或扩展现有内容。虽然对话可以以不同的方式进行,但是最常用的是模态,与叠加层中的其他内容隔离。

为什么需要对话框元素?

直到新元素发布,要实现一个对话框到一个网站,你将不得不从头开始编写或使用外部库 - 这种组件没有标准的语法或默认样式。缺乏标准意味着浏览器和屏幕阅读器等辅助技术默认情况下无法区分对话框相关内容和其他页面内容。

为了解决可访问性问题,开发人员必须使用aria属性(如role =“dialog”)来描述对话框中的内容。正确管理键盘焦点对于使用对话框的可访问性也很重要,例如,对话框中必须至少有一个可调焦的控件。

一些伟大的库被创建,使开发者更容易实现可访问的对话框,比如Edenspiekermann的A11y Dialog。除了这样的库之外,像Bootstrap和Foundation这样的CSS框架也使得它们内置的模式/对话框变得可用。

尽管今天这些库和框架仍然是相关的和有用的,但是具有用于对话的本地HTML元素确保了这样的经常使用的设计模式对于每个人都是很好的语法,标准和可访问性。另外,在浏览器中内置对话逻辑可以节省那些宝贵的代码字节!

使用对话框元素

现在我们明白为什么需要这个了,我们来看看我如何使用对话框元素。

HTML代码

对话框元素的标记就像在<dialog>标签中包装一些内容一样简单。为了使对话框起作用,我们需要一个按钮来打开它,还有一个按钮可以关闭或者撤销它。

要使对话框默认打开,可以添加一个打开的属性。

如果您的对话框包含一个表单,则表单元素的方法属性应设置为对话框。

JavaScript代码

没有JavaScript,对话元素将不会交互。我们可以将上面的HTML例子中的按钮和对话框元素连接到一些点击事件监听器。

就是这样,我们有一个可以正常运行本地化的对话框!

CSS代码

对话框元素的默认样式不会适合每个人的口味......比较幸运的是,我们可以用CSS来设计样式。

还有一个backdrop可以帮助我们选择不同的背景

完整demo演示如下:

支持

早在2014年,Chrome和Opera就开始支持对话元素,最近又推出了Chrome Android和三星浏览器。它也支持Firefox,但必须通过about:config启用。尽管有几个主要的浏览器不支持dialog,但有一个很好的polyfill可用。

习过js的小伙伴会发现,我们在一些实例中用到了alert()方法、prompt()方法、prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性更精彩,实际上我们经常会在进行网页浏览时简单这种类型的对话框,在用户与应用程序进行双向交流时,经常要用到对话框。

javascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()来获得,可以利用这些对话框来完成js的输入和输出,实现与用户能进行交互的js代码。

今天就来简单介绍一下js中的三种弹出对话框

第一种:alert()方法

alert()方法是这三种对话框中最容易使用的一种,可以用来简单而明了地将alert()括号内的文本信息显示在对话框中,我们将它称为警示对话框,要显示的信息放置在括号内,该对话框上包含一个“确认”按钮,用户阅读完所显示的信息后,只需单击该按钮就可以关闭对话框。下面来看一个使用alert()方法的例子,代码如下所示:

<html> <head><title>编写html页面</title> <script language="javascript"> //JavaScript脚本标注 alert("上联:山石岩下古木枯");//在页面上弹出上联 alert("下联:白水泉边少女妙");//在页面上弹出下联 </script> </head> </html>

执行上面的小例子,在页面上弹出对话框并显示一句话“上联:山石岩下古木枯”,如下所示:

接着,单击“确认”按钮后再显示第二个对话框并显示“白水泉边少女妙!”,效果如下;

在页面上弹出对话框并显示一句话“上联:山石岩下古木枯”,单击“确认”按钮后再显示第2个对话框并显示“白水泉边少女妙!”我们来分析一下这个小例子:

a、在<script>脚本块中两次调用alert()方法;

b、在每个alert()括号内分别添加了一段文本信息,运行出现如下图所示的页面,当使用鼠标单击页面上的“确定”按钮后,出现第二个页面,再点击“确定”按钮后就关闭页面上的对话框。 注意:两个对话框是分别显示的,而不是一个覆盖另一个,这是因为js实在执行完第一个alert()并等到用户点击“确认”按钮之后才去执行第二个alert()的。

alert()是js的window对象的一个方法,调用时可以写成window.alert(),也可以写成alert(),功能都是产生一个带确认按钮的对话框,上面显示括号内的信息,

第二种:confirm()方法

confirm()方法与alert()方法的使用十分类似,不同点是在该种对话框上除了包含一个“确认”按钮外,还有一个“取消”按钮,这种对话框称为确认对话框,在调用window对象的confirm()方法以及后面介绍的prompt()方法时也可以不写window。下面来看一个关于confirm()的小例子,代码如下所示:

<html> <head> <title>编写html页面</title> <script language="javascript"> //js脚本标注 confirm("上联:一但重泥拦子路;下联:两岸夫子笑颜回"); //在页面上弹出确认对话框 </script> </head> </html>

显示效果如下:

分析一下这个小例子:

a、在<script>脚本块中添加confirm()方法、

b、在confirm()括号内添加了一段文本信息,运行效果如上图所示,如果用户单击“确认”按钮,则confirm()方法会返回true,如果用户单击“取消”按钮,则confirm()方法会返回false,无论用户选择哪个按钮,都会关闭对话框,而继续执行javascript代码。单击“确认”或“取消”按钮都是关闭对话框,似乎没有什么区别,实际上,无论是单击“确认”或“取消”按钮都会返回一个布尔值,这样就 可以再幕后有一些js代码来发挥按钮的作用,请大家看下面的例子,体会使用confirm()返回布尔值的妙处。代码如下:

<html> <head> <title>编写html页面</title> <script language="javascript"> //js脚本标注 var con; con=confirm("你喜欢玫瑰花么?"); //在页面上弹出对话框 if(con==true)alert("非常喜欢!"); else alert("不喜欢!"); </script> </head> </html>

我们来分析一下这个小例子:

a、在<script>脚本块中声明了一个变量con。

b、con=confirm()一句将confirm()方法返回的布尔值赋给con。

c、通过if语句来使用con的值,分别执行不同的语句;执行的效果如下:

如果单击页面的确认框上的“确定”按钮后,出现如下图所示的页面:

如果单击“取消”按钮,则出现如下图所示的页面:

第三种: prompt()方法

alert()方法和confirm()方法的使用十分类似,都是仅仅显示已有的信息,但用户不能输入自己的信息,但是prompt()可以做到这点,她不但可以显示信息,而且还提供了一个文本框要求用户使用键盘输入自己的信息,同时她还包含“确认”或“取消”两个按钮,如果用户“确认”按钮,则prompt()方法返回用户在文本框中输入的内容(是字符串类型)或者初始值(如果用户没有输入信息);如果用户单击“取消”按钮,则prompt()方法返回null,我们称这种对话框为提示框,在这三种对话框中,她的交互性最好。

看下面一个小例子:在页面上两次弹出提示对话框,使用户能输入有关信息,代码如下:

<html> <head> <title>编写html页面</title> <script language="javascript"> //js脚本标注 var name,age; name=prompt("请问你叫什么名字?"); /*在页面上弹出提示对话框, 将用户输入的结果赋给变量name*/ alert(name); //输出用户输入的信息 age=prompt("你今年多大了?","请在这里输入年龄"); /*在页面上再一次弹出提示对话框, 讲用户输入的信息赋给变量age*/ alert(age)//输出用户输入的信息 </script> </head> </html>

运行上面的程序,效果如下所示:


点击确定,会有这么惊喜nie:

我们再点击确定按钮:

再点击确定按钮:

分析一下这个小例子

a、在<script>脚本块中添加了两个prompt()方法。

b、在第一个prompt()括号内添加了一段文本信息。

c、name=prompt()一句是将用户在文本框中输入的信息赋给变量name。

alert()、confirm()、prompt()的区别和联系:

警告框alert()

alert是警告框,只有一个按钮“确定”无返回值,警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert("文本")。

确认框confirm()

confirm是确认框,两个按钮,确定或者取消,返回true或false。确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。语法:confirm("文本")

提示框prompt()

prompt是提示框,返回输入的消息,或者其默认值提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt("文本","默认值")

1),弹窗及参数说明

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <style type="text/css"></style>
	<link rel="stylesheet" type="text/css" href="#">
	
</head>
<body>
	
	<input type="button" value="打开新窗口" onclick="openNewWin()" />
	
</body>
<script type="text/javascript">

	function openNewWin() {
		
		var openWindow = window.open("newTest.html",
			"弹到新窗口",
			"height=500, width=800, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no");
		
	}
	
	/***
		(00) window.open    弹出新窗口的命令
		(01) newTest.html   弹出窗口的文件名,或请求地址
		(02) 弹出窗口的名字(不是文件名),非必须,可用空''代替
		(03) height=100     窗口高度
		(04) width=400      窗口宽度
		(05) top=0          窗口距离屏幕上方的像素值
		(06) left=0         窗口距离屏幕左侧的像素值
		(07) toolbar=no     是否显示工具栏,yes为显示
		(08) menubar        表示菜单栏
		(09) scrollbars     表示滚动栏
		(10) resizable=no   是否允许改变窗口大小,yes为允许
		(11) location=no    是否显示地址栏,yes为允许
		(12) status=no      是否显示状态栏内的信息(通常是文件已经打开),yes为允许
	***/
	
</script>
</html>

(2),弹窗并居中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <style type="text/css"></style>
	<link rel="stylesheet" type="text/css" href="#">
	
</head>
<body>
	
	<input type="button" value="弹出的窗口居中" onclick="testOpenCenterWindow()" />
	
</body>
<script type="text/javascript">

	function testOpenCenterWindow() {
		
		// 窗口垂直位置水平位置
		var iTop = (window.screen.availHeight - 30 - 500) / 2;
		var iLeft = (window.screen.availWidth - 10 - 800) / 2; //减width
		var openWindow = window.open("newTest.html"
			,"测试弹窗口并居中"
			,"height=500, width=800, top="+ iTop
			+", left="+ iLeft
			+", toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no"
				);
	}
	
</script>
</html>

(3),窗口 location属性

window对象location属性是引用Location对象,它表示该窗口显示文档的URL
window.location.href="page1.jsp";  //当前窗口显示指定页面
window.close();                                 //关闭本页面

(4),窗口与父窗口通信