官术网_书友最值得收藏!

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>contentEditalbe屬性示例</title>
</head>
<h2>可編輯列表</h2>
<ul contentEditable="true">
<li>列表元素1</li>
<li>列表元素2</li>
<li>列表元素3</li>
</ul>

這段代碼運行后的結果如圖2-2所示。

圖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.4.2 designMode屬性

designMode屬性用來指定整個頁面是否可編輯,當頁面可編輯時,頁面中任何支持上文所述的contentEditable屬性的元素都變成了可編輯狀態。designMode屬性只能在JavaScript腳本里被編輯修改。該屬性有兩個值—“on”與“off”。屬性被指定為“on”時,頁面可編輯;被指定為“off”時,頁面不可編輯。使用JavaScript腳本來指定designMode屬性的方法如下所示:

document.designMode="on"

針對designMode屬性,各瀏覽器的支持情況也各不相同:

  • IE8:出于安全考慮,不允許使用designMode屬性讓頁面進入編輯狀態。
  • IE9:允許使用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 Opera瀏覽器中spellcheck的屬性示例


2.4.5 tabindex屬性

tabindex是開發中的一個基本概念,當不斷敲擊Tab鍵讓窗口或頁面中的控件獲得焦點,對窗口或頁面中的所有控件進行遍歷的時候,每一個控件的tabindex表示該控件是第幾個被訪問到的。

過去這個屬性在編輯網頁時是非常有用的,但如今控件的遍歷順序是由元素在頁面上所處的位置決定的,所以就不再需要了。

但是tabindex還有另外一個作用,在默認情況下,只有鏈接元素與表單元素可以通過按鍵獲得焦點。如果對其他元素使用tabindex屬性后,也能讓該元素獲得焦點,那么當腳本中執行focus()語句的時候,就可以讓該元素獲得焦點了。但這樣做會產生一個副作用:該元素也可以通過按Tab鍵獲得焦點,而這有時可能不是開發者想要的結果。

把元素的tabindex值設為負數(通常為-1)后就解決這個問題了。tabindex的值為負數后,仍然可以通過編程的方式讓元素獲得焦點,但按下Tab鍵時該元素就不能獲得焦點了,這在復雜的頁面中或復雜的Web應用程序中是十分有用的。在HTML 4中,-1是一個無用的屬性值,但到了HTML 5中,通過巧妙地運用讓該屬性值得到了極大的應用。

主站蜘蛛池模板: 和静县| 古交市| 龙州县| 宜君县| 奉化市| 连平县| 周至县| 德州市| 都江堰市| 西乌| 日土县| 沽源县| 蛟河市| 沾益县| 彭泽县| 凌源市| 呈贡县| 江油市| 扶绥县| 霍城县| 托里县| 噶尔县| 金堂县| 昂仁县| 墨竹工卡县| 济南市| 满城县| 南昌市| 治县。| 南丰县| 石首市| 乳山市| 阿荣旗| 开原市| 抚远县| 家居| 衡东县| 红河县| 四会市| 盘锦市| 宣汉县|