3.6 ‘ Notification API 97 即使沒有Web服務,這個API也可以使用戶的機器成為一臺運算節點,完成運算后再向服務端反饋。 當然這只是一個構想,而且有點夸張,但是HTML5給我們帶來的很多觀念和技術上的革新 已經對我們產生了深遠的影響,我們何不帶著愉悅的心情去擁抱它呢1 3.6 Notification API 這是一個非常小巧但很有用的API,由于W3C標準文檔中的英文為Desktop Notification API, 所以中文翻譯為桌面通知接口o 大家一直認為,任何網站、任何Web App都不能做到像桌面應用程序一樣,直接提供桌面提 示服務。各種網站的站內短信、電子郵件、事務通知,都沒有辦法讓用戶在瀏覽器窗口最小化的 情況下看到最新的提示。雖然有人嘗試使用聲音的方式輔助提示用戶,但對于沒有音箱的用戶來 說,這依然不能解決實際問題。 因此,一個十分有用、能夠解決實際問題的Notification API誕生了。到目前為止,Facebook 和Twitter已經采用了這個技術。在書稿的修正過程中,有些公司以及HTML5的愛好者們也開 始大量使用Notification API了(特別是在移動設備中)o本節中.我們將向大家介紹這個API 的用法。 3.6.1 如何檢測瀏覽器是否支持Notification API 照例,我們來一段瀏覽器是否支持Notification API的能力檢測代碼: 3.6.2 Web的Notification的狀態 我們可以使用webkitNotifications.checkPermission這個方法來判斷當前Notification 的許可狀態o Notification的狀態一共有3種。 口0表示PERMISSION_ALLOWED(允許)o 口l表示PERMISSION_NOT_ALLOWED(未作許可授權)o 口2表示PERMISSION_DENIED(拒絕)o 3.6.3 讓你的Web App帶著Notification跑 本節設定一個場景,假定你希望www.mzwkj.com這個網站能夠讓你查看其他網站,或者做其他工作的時候,也可以向你作出反饋或者提醒。為了能夠讓讀者有個比較完整的印象,示例 代碼如代碼清單34所示。 3.7 audio標簽和video標簽 99 圖3-9是上面示例代碼在瀏覽器上運行后的截圖。 說明首先需要詢問用戶是否同意授權.代碼中的RequestPermission()方法帶有一個回調函 數,如果用戶同意授權的話,代碼會繼續執行. 如果用戶在收到授權請求時,當時拒絕了,但是以后又需要使用Notification API,那沒有辦法可以迅速獲得授權。除非用戶清空自己的瀏覽器記錄,否則這個拒絕狀態將一直存在。請 讀者在使用這個API時,注意考慮這個問題。 目前.Chrome出于安全問題,已經改變了對Notification API的支持,升級成需要服務器端 運行支持。 如果在本機試驗,會出現Uncaught Error:SECURITY—ERR: DOM Exception 18這樣 的報錯。濟南網站建設公司請讀者在練習時,注意這個問題。會報出同樣問題的,目前還有Web Worker API等。 Chrome有“著名”的同源安全限制策略問題o Chrome在初期版本中是支持此類內容的,后來 由于安全問題進行了限制。 我們在此也鄭重提醒各位讀者,由于HTML5的發展非常快,變革也非常大,因此往往伴 隨著一些不安仝的應用。 3.7 audio標簽和video標簽 audio和video標簽的推出,可以說是填補了HTML對音頻和視頻播放標簽的空白。一直以 來.l-mVIL都沒有適合自己的播放標簽,而統一采用這樣的標簽來播放。本節首先從API 的角度,對audio和video標簽進行了解釋和分析,從而幫助大家了解audio和videoo 表3-7給出了audio和video標簽的瀏覽器支持情況,具體以當前測覽器所實際支持的情況 為準。