1.3 HTML5的改进
HTML5的主要目标是能够创建更简单的程序,编写更简洁的代码。例如,为了使Web应用程序的开发变得更加容易,HTML5中提供了很多API。为了使HTML代码变得更简洁,在HTML5中开发了新的属性、新的元素等。总体来说,HTML5为Web平台提供了很多新的功能。本节将介绍HTML5的几个新增特性。
1.3.1 部分代替了原来的JavaScript
HTML5增加了很多非常实用的功能,这些功能可以部分代替JavaScript,只需要通过为标签增加一些属性即可。
例如,打开一个页面后立即让某个单行文本框获得输入焦点,在HTML5之前,可能需要通过JavaScript来实现。代码如下。
<form> <p><label>用户名:<input name="search" type="text" id="search"></label></p> <script type="text/javascript"> document.getElementById("search").focus(); </script> </form>
上面的代码片段通过JavaScript来完成这个功能,但在HTML5中则只需要设置一个属性即可。如果使用HTML5,则可以把上面的代码改为如下形式。
<form> <p><label>用户名:<input name="search" autofocus></label></p> </form>
在这个示例中,我们可以看到,在HTML4中使用了一段JavaScript代码,而在HTML5中并没有使用这段代码,取而代之的是一个在HTML5中新出现的属性。
我们把两个代码片段放在一起进行对比,不难发现使用HTML5之后简洁得多。除了这里示范的autofocus可用于自动获得焦点,HTML5还支持其他一些属性,例如一些输入校验的属性,以前都必须通过JavaScript来完成,但现在都只要一个HTML5属性即可。
1.3.2 更明确的语义支持
在HTML5之前,如果要表达一个文档结构,则只能通过<div>元素来实现。例如,我们来看一个在以前的HTML中的一种页面结构,代码如下。
<div id="header">...</div> <div id="nav">...</div> <div class="article"> ... </div> <div id="aside">...</div> <div id="footer">...</div>
在上面的页面结构中,所有的页面元素都采用<div>元素来实现,不同<div>元素的id不同,不同id的<div>元素代表不同含义,但这种采用<div>布局的方式导致缺乏明确的语义,因为所有内容都是<div>元素。
HTML5则为上面的页面布局提供了更明确的语义元素,此时可以将上面的代码片段改为如下形式。
<header>...</header> <nav>...</nav> <article> ... </article> <aside>...</aside> <footer>...</footer>
在这个示例中,我们可以看到,HTML4中常见的用<div>划分页面结构的方法已经被HTML5中一种新出现的元素所取代。这些元素可以提供更加清晰的语义。
除此之外,以前的HTML可能会通过<em>这样的元素来表示“被强调”的内容,但到底是哪一种强调,HTML却无法表达。HTML5提供了更多支持语义的强调元素,例如:
<time>2023-10-10</time> <mark>被标记的文本</mark>
上面的第一个<time>元素用于强调被标记的内容是日期或时间,而<mark>元素则用于强调被标记的文本。HTML5新增的这两个元素提供了比<em>元素更丰富的语义。
1.3.3 增强了Web应用程序功能
一直以来,HTML页面的功能被严格地限制着,客户端从服务器下载HTML页面数据,浏览器负责呈现这些HTML页面数据。出于对客户机安全性的考虑,以前的HTML在安全性方面确实做得足够安全。
当HTML页面变得过于安全时,我们就需要通过JavaScript等其他方式来增加HTML的功能。换句话来说,HTML对Web程序而言功能过于简单,例如上传文件时无法同时选择多个文件,前端开发者不得不通过Flash、JavaScript等各种技术来克服这个困难。为了弥补这种不足,HTML5规范增加了不少新的API,这些API可以轻松地实现类似批量上传这样的Web应用功能。