HTML 5与CSS 3权威指南(第4版·上册)
上QQ阅读APP看书,第一时间看更新

2.4 全局属性

在HTML 5中,新增了一个“全局属性”的概念。所谓全局属性,是指可以对任何元素都使用的属性,本节将详细介绍几种常用的全局属性。

2.4.1 contentEditable属性

contentEditable是由微软开发的,被其他浏览器反编译并投入应用的一个全局属性。该属性的主要功能是允许用户编辑元素中的内容,所以该元素必须是可以获得鼠标焦点的元素,而且在点击鼠标后要向用户提供一个插入符号,提示用户该元素中的内容允许编辑。contentEditable属性是一个布尔值属性,可以被指定为true或false。

除此之外,该属性还有个隐藏的inherit(继承)状态,当属性值为true时,元素被指定为允许编辑;当属性值为false时,元素被指定为不允许编辑;当未指定true或false时,则由inherit状态来决定,如果元素的父元素是可编辑的,则该元素就是可编辑的。

另外,除了contentEditable属性外,元素还具有一个isContentEditable属性,当元素可编辑时,该属性值为true;当元素不可编辑时,该属性值为false。

代码清单2-2中给出了一个使用contentEditable属性的示例,当列表元素被加上contentEditable属性后,该元素就变成可编辑的了,读者可自行在浏览器中对该示例进行试验。

代码清单2-2 contentEditable属性示例

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>conentEditalbe属性示例</title>
</head>
<h2>可编辑列表</h2>
<ul contentEditable="true">
<li>列表元素1</li>
<li>列表元素2</li>
<li>列表元素3</li>
</ul>

这段代码运行后的结果如图2-2所示。

在编辑完元素中的内容后,要想保存其中内容,只能把该元素的innerHTML发送到服务器端进行保存,因为改变元素内容后该元素的innerHTML内容也会随之改变,目前还没有特别的API来保存编辑后元素中的内容。

最后,在这里列举一下支持contentEditable属性的元素:defaults、A、ABBR、ACRONYM、ADDRESS、B、BDO、BIG、BLOCKQUOTE、BODY、BUTTON、CENTER、CITE、CODE、CUSTOM、DD、DEL、DFN、DIR、DIV、DL、DT、EM、FIELDSET、FONT、FORM、hn、I、INPUT type=button、INPUT type=password、INPUT type=radio、INPUT type=reset、INPUT type=submit、INPUT type=text、INS、ISINDEX、KBD、LABEL。

图2-2 可编辑列表示例

2.4.2 designMode属性

designMode属性用来指定整个页面是否可编辑,当页面可编辑时,页面中任何支持上文所述的contentEditable属性的元素都变成了可编辑状态。designMode属性只能在JavaScript脚本中被编辑修改。该属性有两个值——“on”与“off”。当该属性值被指定为“on”时,页面可编辑;当该属性值被指定为“off”时,页面不可编辑。使用JavaScript脚本来指定designMode属性的方法如下所示:

document.designMode="on"

针对designMode属性,各浏览器的支持情况也各不相同:

·IE 8:出于安全考虑,不允许使用designMode属性让页面进入编辑状态。

·IE 9:允许使用designMode属性让页面进入编辑状态。

·Chrome 3和Safari:使用内嵌frame的方式,该内嵌frame是可编辑的。

·Firefox和Opera:允许使用designMode属性让页面进入编辑状态。

2.4.3 hidden属性

在HTML 5中,所有的元素都允许使用一个hidden属性。该属性类似于input元素中的hidden元素,功能是通知浏览器不渲染该元素,使该元素处于不可见状态。但是元素中的内容还是被浏览器创建的,也就是说页面装载后允许使用JavaScript脚本将该属性取消,取消后该元素变为可见状态,同时元素中的内容也即时显示出来。hidden属性是一个布尔值的属性,当设为true时,元素处于不可见状态;当设为false时,元素处于可见状态。

2.4.4 spellcheck属性

spellcheck属性是HTML 5针对input元素(type=text)与textarea这两个文本输入框提供的一个新的属性,它的功能对用户输入的文本内容进行拼写和语法检查。spellcheck属性是一个布尔值的属性,具有true或false两种值。但是它在书写时有一个特殊的地方,就是必须明确声明属性值为true或false,书写方法如下所示:

<!—以下两种书写方法正确-->
<textarea spellcheck="true" >
<input type=text spellcheck=false>
<!—以下书写方法为错误-->
<textarea spellcheck >

需要注意的是,如果元素的readOnly属性或disabled属性设为true,则不执行拼写检查。

目前除了IE之外,Firefox、Chrome、Safari、Opera等浏览器都对该属性提供了支持。

图2-3为Opera浏览器中spellcheck属性的表现形式。

图2-3 Operal浏览器中spellcheck的属性示例

2.4.5 tabindex属性

tabindex是开发中的一个基本概念,当不断敲击Tab键让窗口或页面中的控件获得焦点,当对窗口或页面中的所有控件进行遍历的时候,每一个控件的tabindex表示该控件是第几个被访问到的。

过去这个属性在编辑网页时是非常有用的,但如今控件的遍历顺序是由元素在页面上所处位置决定的,所以就不再需要了。

但是tabindex还有另外一个作用,在默认情况下,只有链接元素与表单元素可以通过按键获得焦点。如果对其他元素使用tabindex属性后,也能让该元素获得焦点,那么当脚本中执行focus()语句的时候,就可以让该元素获得焦点。但这样做会产生一个副作用:该元素也可以通过按Tab键获得焦点,而这有时可能不是开发者想要的结果。

把元素的tabindex值设为负数(通常为-1)后就可以解决这个问题。tabindex值为负数后,仍然可以通过编程的方式让元素获得焦点,但按下Tab键时该元素就不能获得焦点,这在复杂的页面中或复杂的Web应用程序中是十分有用的。在HTML 4中,-1是一个无用的属性值,但到了HTML 5中,通过巧妙运用可以让该属性值获得极大应用。