中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

突襲HTML5之Javascript API擴展5—其他擴展(應用緩存/服務端消息/桌面通知)
來源:易賢網 閱讀:1674 次 日期:2016-07-22 14:45:23
溫馨提示:易賢網小編為您整理了“突襲HTML5之Javascript API擴展5—其他擴展(應用緩存/服務端消息/桌面通知)”,方便廣大網友查閱!

前面已經總結了主要的API擴展(應用緩存/服務端消息/桌面通知),下面的幾個只有在特定的場合才能發揮它的潛質,無一例外,IE均不支持,桌面通知目前只有Chrome支持,感興趣的朋友可以了解下,或許對你有所幫助

應用緩存

很多時候,我們需要緩存一些不經常改變的頁面來提高訪問速度;而且對于某些應用,我們也希望在離線的情況下也可以使用。在HTML5中,你可以通過一個稱之為“應用緩存”的技術很方便的實現這些功能。

在應用緩存的實現中,HTML5允許我們創建一個緩存manifest文件來方便的生成一個離線版的應用。

實現步驟:

1. 啟用頁面的緩存,很簡單,只需要在document的html中包含manifest屬性:

代碼如下:

<!DOCTYPE HTML>

<html manifest="demo.appcache">

...

</html>

每一個包含這個manifest屬性的頁面當用戶訪問的時候都會被緩存。如果manifest屬性沒有指定的話,將不會緩存(除非網頁被直接在manifest文件中指定)。manifest文件擴展名還沒有統一的標準,推薦的擴展名是".appcache"。

2. 服務器端配置manifest文件的MIME類型

一個manifest文件需要被正確的MIME-type支持,這種文件類型為"text/cache-manifest"。必須在所使用的web服務器上進行配置。例如:Apache 中可在 .htaccess 中添加: AddType text/cache-manifest manifest。

3.編寫manifest文件

manifest文件是一個簡單的文本文件,告訴了瀏覽器去緩存什么內容(或者不緩存什么內容)。

manifest文件包含下面三個部分:

• CACHE MANIFEST - 在這個列表標題下的文件將會在下載后被緩存。

• NETWORK - 在這個列表標題下的文件將要求連接到服務器,不會進行緩存。

• FALLBACK - 在這個列表標題下的文件如果不能訪問時,則顯示特定的頁面。

完整的一個文件如下面的例子所示:

代碼如下:

CACHE MANIFEST

# 2012-02-21 v1.0.0

/theme.css

/logo.gif

/main.js

NETWORK:

login.asp

FALLBACK:

/html5/ /offline.html

提示:

#開頭的代表注釋。

*可以用表示所有的其它資源或者文件。例如:

代碼如下:

NETWORK:

*

表示所有的資源或者文件都不會緩存。

4.更新緩存

一旦一個應用被緩存,它將保持緩存除非一下情況發生:

• 用戶刪除了緩存

• manifest文件被修改

• 應用緩存被程序修改

所以一旦文件被緩存,除了人為的修改情況,瀏覽器將會持續的顯示緩存版本內容,即使你修改了服務器文件。為了讓瀏覽器更新緩存,你只能去修改manifest文件。

:以"#"開始的行是注釋行,但是可以有其它用處。如果你的修改只涉及到一個圖片或者javascript功能,那些變化是不會被重新緩存的。在注釋中更新日期和版本是讓瀏覽器重新緩存你的文件的一個方法

:瀏覽器可以有很多不同大小限制的緩存數據(有些瀏覽器允許5M的緩存數據)。

代碼如下:

<strong>服務端消息</strong>

還有一個經常使用的場景是:當服務端的數據發生變化時,如何讓客戶端知道?這在以前的做法是:頁面主動去查詢服務端是否有更新。根據前面的介紹,我們知道,使用WebSocket可以實現雙向通訊。這里再介紹另外一個HTML5中新特性:服務端消息(Server-Sent Events)。

在HTML5中,承載這項特性的對象是EventSource對象。

使用步驟如下:

1.檢查瀏覽器對EventSource對象的支持性,這個大家都知道了:

代碼如下:

if(typeof(EventSource)!=="undefined")

{

// Yes! Server-sent events support!

// Some code.....

}else {

// Sorry! No server-sent events support..

}

2.服務器端的發送消息代碼

服務器端的發送更新消息很簡單:設置content-type頭信息為”text/event-stream"后,你就可以發送事件。以ASP代碼為例:

代碼如下:

<%

Response.ContentType="text/event-stream"

Response.Expires=-1

Response.Write("data: >> 服務器時間" & now())

Response.Flush()

%>

3.瀏覽器端的接收消息代碼

代碼如下:

var source=new EventSource("demo_sse.php");

source.onmessage=function(event){

document.getElementById("result").innerHTML+=event.data + "

";

};

代碼說明:

• 創建一個EventSource對象,指定發送更新的頁面URL (這里是demo_see.jsp)

• 每一次一個更新接收后,onmessage事件就觸發

• 當onmessage時間觸發,將得到的數據設置到id="result"的元素中

EventSource對象除了onmessage事件外,還有處理錯誤的onerror事件,連接建立的onopen事件等。

桌面通知 - 準HTML5特性

桌面通知功能能夠讓瀏覽器即使是最小化狀態也能將消息通知給用戶。這和WebIM是最為天然的結合。不過,目前支持該特性的瀏覽器只有Chrome。彈窗是大家深惡痛絕的東西,所以開啟這項特性需要得到用戶的許可。

代碼如下:

<script>

function RequestPermission(callback) {

window.webkitNotifications.requestPermission(callback);

}

function showNotification() {

//通過window.webkitNotifications判斷瀏覽器是否支持notification

if (!!window.webkitNotifications) {

if (window.webkitNotifications.checkPermission() > 0) {

RequestPermission(showNotification);

} else {

var notification =window.webkitNotifications.createNotification("[imgurl]","Title","Body");

notification.ondisplay = function() {

setTimeout('notification.cancel()', 5000);

}

notification.show();

}

}

}

</script>

瀏覽器中打開此頁面,就會看到桌面的右下角彈出一個持續5秒鐘的消息窗口。

這項特性使用起來很簡單,但是在實際操作的過程中,應該盡量減少通知功能對用戶的干擾,最大程度的減少通知功能的出現。

下面是網上高手做這個應用的一些經驗:

1. 收到多條消息時確保只出現一條通知;

這個問題比較好解決,因為通知對象擁有一個名為"replaceId"的屬性。指定該屬性后,只要是相同replaceId的通知窗口彈出,都會覆蓋之前彈出的窗口。在實際項目中是給所有的彈出窗口賦了一個相同的replaceId。不過需要注意的是,這種覆蓋行為只在同域下有效。

2. 當用戶處于IM出現的頁面中時(頁面處于Focus狀態)將不出現通知;

這個問題主要是在于判斷瀏覽器窗口是否處于Focus狀態,目前除了監聽window的onfocus和onblur事件之外,貌似沒有更好的方式。在項目中就是通過這種方式來記錄窗口的Focus狀態,然后當消息到達時根據Focus狀態來判斷是否彈出窗口。

代碼如下:

$(window).bind( 'blur', this.windowBlur).bind( 'focus', this.windowFocus);

使用該方法需要注意的地方是,事件注冊的事件點應該盡可能的靠前,如果注冊太晚則當用戶打開頁面后再離開就會很容易出現狀態的誤判。

3. 當用戶使用多Tab開啟多個存在IM的頁面時,只要有一個頁面處于Focus狀態將不出現通知;

多頁面間的狀態共享可以通過本地存儲來實現:

• 瀏覽器窗口Focus時修改本地存儲中指定key的值為"focus"

• 瀏覽器窗口Blur時修改本地存儲中指定key的值為"blur"。

需要注意的是,Chrome下從一個Tab切換到另一個Tab時,Blur有可能比Focus后寫入存儲中,因此修改Focus狀態時需要異步處理。

代碼如下:

/*window on focus事件*/

//用延時是為了解決多個Tab之間切換時,始終讓Focus覆蓋其他Tab的Blur事件

//注: 如果在點擊Tab之前沒有Focus到document上則點擊Tab是不會觸發Focus的

setTimeout( function(){

Storage.setItem( 'kxchat_focus_win_state', 'focus' );

}, 100);

/*window on blur事件*/

Storage.setItem( 'kxchat_focus_win_state', 'blur' );

實現以上狀態共享后,新的消息到達后,只需要查看本地存儲中’kxchat_focus_win_state’的值是否為blur,如果為blur才彈出窗口。

4. 如何讓用戶點擊通知浮動層即可定位到具體的聊天窗口

通知窗口支持onclick等事件響應,而響應函數中的作用范圍屬于創建該窗口的頁面。如下代碼:

代碼如下:

var n = dn.createNotification(

img,

title,

content

);

//確保只有一個提醒

n.replaceId = this.replaceId;

n.onclick = function(){

//激活彈出該通知窗口的瀏覽器窗口

window.focus();

//打開IM窗口

WM.openWinByID( data );

//關閉通知窗口

n.cancel();

};

在onclick的響應函數中訪問的window對象即屬于當前創建頁面,因此可以很方便的與當前頁面進行交互。以上代碼便實現了點擊彈出窗口會跳轉到對應的瀏覽器窗口和打開IM窗口。

頁面中的相關事件很多時候具有不確定的時序性,所以我們的代碼盡量不要假設某些事件觸發的順序是一定的。比如上面的blur和focus事件

更多信息請查看網頁制作
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
久久久久国色av免费观看性色| 亚洲欧美精品在线观看| 亚洲三级毛片| 国产精品成人一区二区| 久久综合给合| 久久精品国产综合| 国产专区一区| 国产亚洲a∨片在线观看| 欧美日本韩国在线| 欧美伊人影院| 久久夜色精品国产亚洲aⅴ| 蜜桃av久久久亚洲精品| 国产伦一区二区三区色一情| 亚洲大胆女人| 久久精品99国产精品酒店日本| 欧美精品一区在线播放| 韩国欧美国产1区| 久久精品国产精品亚洲| 国产欧美日韩免费| 亚洲伊人网站| 久久精品国产久精国产思思| 国产精品久久久久久妇女6080 | 免费美女久久99| 国产亚洲视频在线观看| 欧美色另类天堂2015| 99在线精品视频| 国产女精品视频网站免费| 欧美日韩妖精视频| 久久久青草婷婷精品综合日韩| 中文在线一区| 亚洲人成在线播放| 影音先锋久久久| 国产精品久久久久久超碰| 久久久综合网站| 久久大逼视频| 亚洲欧美韩国| 亚洲网站视频福利| 狠狠色伊人亚洲综合网站色| 欧美色图麻豆| 欧美国产精品v| 久久综合狠狠综合久久综青草| 欧美一区二区三区四区在线| 亚洲男女自偷自拍图片另类| 亚洲一区二区四区| 亚洲欧美久久久久一区二区三区| 亚洲人成网站在线播| 亚洲日本在线观看| 999亚洲国产精| 亚洲日本中文字幕免费在线不卡| 久久综合狠狠综合久久激情| 久久精品在这里| 美乳少妇欧美精品| 正在播放欧美一区| 亚洲天堂视频在线观看| 亚洲精品欧美在线| 亚洲午夜精品一区二区三区他趣| 一区二区三区日韩欧美| 亚洲一二三四久久| 亚洲黑丝一区二区| 一区二区三区成人精品| 欧美在线观看你懂的| 欧美精品v日韩精品v韩国精品v | 久久久精品tv| 欧美日韩另类字幕中文| 国产亚洲欧美一级| 亚洲天堂av图片| 免费视频一区| 国产亚洲a∨片在线观看| aa级大片欧美三级| 麻豆精品在线视频| 国外精品视频| 午夜精品美女久久久久av福利| 欧美精品久久一区二区| 在线日韩欧美| 久久久久看片| 国产日本亚洲高清| 亚洲图片欧美日产| 欧美日韩国产精品一卡| 亚洲精品一区二区三| 久久久久久久一区二区| 国产精品稀缺呦系列在线| 99精品视频一区| 欧美激情视频一区二区三区在线播放 | 日韩亚洲欧美在线观看| 久久久www| 国产女人水真多18毛片18精品视频| 亚洲免费黄色| 欧美高清一区二区| 亚洲人成绝费网站色www| 蜜臀av在线播放一区二区三区| 国产手机视频精品| 欧美主播一区二区三区| 国产欧美日韩亚洲精品| 亚洲欧美日韩中文在线制服| 国产精品美女久久久浪潮软件 | 国产精品亚洲激情| 亚洲视频中文字幕| 国产精品国产三级欧美二区 | 久久精品国产亚洲一区二区| 国产精品一二三| 欧美在线观看视频在线| 国产日韩在线看片| 久久av免费一区| 精品999网站| 麻豆91精品91久久久的内涵| 亚洲福利小视频| 乱人伦精品视频在线观看| 在线播放日韩欧美| 欧美精品成人一区二区在线观看 | 一区二区高清在线| 欧美天天在线| 亚洲专区一二三| 国产香蕉久久精品综合网| 久久精品国语| 亚洲精品美女在线| 欧美日韩一区二区三区| 亚洲一区三区电影在线观看| 国产日韩av高清| 老**午夜毛片一区二区三区| 最新中文字幕亚洲| 国产精品久久久久久久免费软件| 欧美一区日本一区韩国一区| 在线看国产日韩| 欧美日本韩国在线| 欧美一级黄色录像| 亚洲国产精品成人精品| 欧美日韩精品久久久| 亚洲欧美另类在线| 在线成人中文字幕| 欧美性久久久| 欧美中文字幕在线| 亚洲福利视频一区| 国产精品伦子伦免费视频| 久久久久久久久久看片| 99ri日韩精品视频| 国产午夜精品麻豆| 欧美日韩黄视频| 久久久国产精品一区二区中文| 亚洲老板91色精品久久| 国产亚洲精品bv在线观看| 欧美黑人在线观看| 久久大逼视频| 亚洲性图久久| 亚洲精品国产欧美| 精品成人在线观看| 国产精品青草久久久久福利99| 欧美www视频| 久久成人这里只有精品| 亚洲精品一区二区在线| 国产亚洲成av人在线观看导航| 欧美精品91| 蜜桃精品一区二区三区| 欧美一区二区福利在线| 一区二区三区日韩精品| 1000部精品久久久久久久久| 国产精品久久久久久av下载红粉| 毛片基地黄久久久久久天堂| 亚洲午夜久久久| 亚洲精品日日夜夜| 国产综合久久久久久鬼色| 国产精品久久久久久一区二区三区 | 国产日韩欧美三区| 欧美 日韩 国产一区二区在线视频| 欧美亚洲综合久久| 一本久久青青| 在线播放视频一区| 国产麻豆精品theporn| 欧美日韩性视频在线| 欧美激情综合五月色丁香| 欧美顶级大胆免费视频| 久久久噜噜噜久久| 久久不见久久见免费视频1| 亚洲一区二区三区午夜| 在线一区二区三区四区五区| 亚洲精品极品| 国产日韩专区| 国产精品你懂的在线欣赏| 欧美日韩国产一区二区| 欧美日韩国产bt| 欧美日韩国产丝袜另类| 欧美激情第4页| 免费91麻豆精品国产自产在线观看| 欧美在线视频一区二区| 久久大逼视频| 欧美资源在线观看| 久久久免费观看视频| 久久久免费观看视频| 久久精品久久99精品久久| 久久精品日韩欧美| 久久婷婷丁香| 免费亚洲电影在线| 欧美大片在线观看一区| 欧美日韩精品国产| 国产精品一区二区久久国产| 国产日韩精品一区二区三区在线 | 亚洲精品欧美日韩专区| 日韩视频免费观看高清完整版| 亚洲少妇诱惑| 久久av一区| 欧美精品入口|