2.3 全局属性
HTML 5中新增了“全局属性”概念。所谓全局属性,是指可以对任何元素都使用的属性。下面将详细介绍几个常用的全局属性。
2.3.1 contentEditable属性
contentEditable由Microsoft发明,经过反向工程后由所有其他浏览器实现,现在成为HTML的正式的部分。
该属性的主要功能是允许用户编辑元素中的内容,所以该元素必须是可以获得鼠标焦点的元素,而且在点击鼠标后要向用户提供一个插入符号,提示用户该元素中的内容允许编辑。
contentEditable是一个布尔类型属性,因此可以将其设置为true或false。
除此之外,该属性还有个隐藏的inherir(继承)状态。属性为true时,元素被指定为允许编辑;属性为false时,元素被指定为不允许编辑;未指定true或false时,则由inherir状态来决定,如果元素的父元素是可编辑的,则该元素就是可编辑的。
另外,除了contentEditable属性外,元素还具有iscontentEditable属性。当元素可编辑时,该属性为true;当元素不可编辑时,该属性为false。
下面是一个使用contentEditable属性的实例,当列表元素被加上contentEditable属性后,该元素就变成可编辑的了。实例代码如下。
运行这段代码,效果如图2.1所示。在编辑完元素中的内容后,如果想要保存其中的内容,只能把该元素的innerHTML发送到服务器进行保存,因为改变元素内容后该元素的innerHTML内容也会随之改变,目前还没有特别的API来保存编辑后元素中的内容。
2.3.2 designMode属性
designMode属性用来指定整个页面是否可编辑,当页面可编辑时,页面中任何支持上文所述的contentEditable属性的元素都变成了可编辑状态。designMode属性只能在JavaScript脚本里被编辑修改。该属性有两个值——on与off。
当属性被指定为on时,页面可编辑;被指定为off时,页面不可编辑。使用JavaScript脚本来指定designMode属性的方法如下所示。
2.3.3 hidden属性
hidden属性类似于aria-hidden,它告诉浏览器这个元素的内容不应该以任何方式显示。但是元素中的内容还是浏览器创建的,也就是说,页面装载后允许使用JavaScript脚本将该属性取消,取消后该元素变为可见状态,同时元素中的内容也即时显示出来。hidden属性是一个布尔型的属性,当设为true时,元素处于不可见状态;当设为false时,元素处于可见状态。
2.3.4 spellcheck属性
spellcheck属性是布尔型的属性,它告诉浏览器检查元素的拼写和语法。如果没有这个属性,默认的状态表示元素根据默认行为来操作,可能是根据父元素自己的spellcheck状态。因为spellcheck属性属于布尔型属性,因此它具有true和false两种值。但是它在书写时有一个特殊的地方,就是必须明确声明属性值为true或false,书写方法如下所示。
该属性在Opera浏览器上的表现形式如图2.2所示。
2.3.5 tabindex属性
tabindex是一个旧的概念,指当用户使用键盘导航一个页面(通常使用Tab键,尽管某些浏览器,如最著名的Opera,可能使用不同的键组合来导航)时,页面上的元素获得焦点的顺序。
当站点使用深度嵌套的布局表格来构建时,这非常常用,但是如今这已经不再那么常用了。默认的标签页顺序是由元素出现在标记中的顺序来决定的,因此顺序正确和结构良好的文档应该不再需要额外的标签页顺序来提示。
tabindex属性还有一个用处。通常只有链接、表单元素和图像映射区域可以通过键盘获得聚焦。添加一个tabindex可以使得其他元素也成为可聚焦的,因此从JavaScript执行focus命令,就可以把浏览器的焦点移动到它们上。这也会使得这些元素成为键盘可聚焦的,这可不是我们想要的结果。
使用一个负整数允许元素通过编程来获得焦点,但是不应该允许使用顺序聚焦导航来到达元素。在HTML 4中,“-1”对于属性来说是一个无效的值,并且在除表单字段和链接以外的任何元素上,该属性自身也是无效的。然而它已经在浏览器中生效了,并且它解决了一个真正的问题,HTML 5使其变为到处合法有效。