性能集成
十余年的濱海網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整濱海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“濱海網(wǎng)站設(shè)計”,“濱海網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
web workers
Web Worker 是HTML5標準的一部分,這一規(guī)范定義了一套 API,它允許一段JavaScript程序運行在主線程之外的另外一個線程中。
一般情況下,當在 HTML 頁面中執(zhí)行腳本時,頁面的狀態(tài)是不可響應的,直到腳本已完成。?
web worker 是運行在后臺的 JavaScript,獨立于其他腳本,不會影響頁面的性能。您可以繼續(xù)做任何愿意做的事情:點擊、選取內(nèi)容等等,而此時 web worker 在后臺運行。
History API
window 對象通過history對象提供對瀏覽器歷史記錄的訪問能力。它暴露了一些非常有用的方法和屬性,讓你在歷史記錄中自由前進和后退,而在HTML5中,更可以操縱歷史記錄中的數(shù)據(jù)。
概覽
可以通過back(),forward()和go()方法在用戶的歷史記錄中前進與后退。
要在歷史記錄中前進和后退,只需要這樣做:
window.history.back(); //后退window.history.forword(); //前進12
而利用go()方法,通過指定一個相對于當前頁面位置的數(shù)值,可以從當前會話的歷史記錄中加載頁面(當前頁面索引值為0,上一頁為-1,下一頁為1)
window.history.go(-1); //后退一頁,相當于back()window.history.go(1); ?//向前移動一頁(相當于調(diào)用forward())12
你可以查看length屬性值,了解歷史記錄棧中一共有多少頁:
var numberOfEntries = window.history.length;1
添加和修改歷史記錄條目
HTML5引進了history.pushState()方法和history.replaceState()方法,它們允許你逐條地添加和修改歷史記錄條目。這些方法可以協(xié)同window.onpopstate事件一起工作。
例子:?
假設(shè)?hfoo.html?將執(zhí)行如下JavaScript代碼:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");12
這將讓瀏覽器的地址欄顯示tml,但不會加載bar.html頁面也不會檢查bar.html是否存在。
假設(shè)現(xiàn)在用戶導航到了com,然后點擊了后退按鈕,此時,地址欄將會顯示har.html,并且頁面會觸發(fā)popstate事件,該事件中的狀態(tài)對象(state object)包含stateObj的一個拷貝。該頁面看起來像foo.html,盡管頁面內(nèi)容可能在popstate事件中被修改。
如果我們再次點擊后退按鈕,URL將變回hoo.html,文檔將觸發(fā)另一個popstate事件,這次的狀態(tài)對象為null?;赝送瑯硬粫淖兾臋n內(nèi)容。
pushState()方法?
此方法有三個參數(shù):
狀態(tài)對象(state object):一個js對象,與用pushState()方法創(chuàng)建的新歷史記錄條目關(guān)聯(lián)。
標題(title):FireFox瀏覽器目前會忽略該參數(shù),雖然以后可能會用上??紤]到未來可能會對該方法進行修改,傳一個空字符串會比較安全?;蛘撸阋部梢詡魅胍粋€簡短的標題,標明將要進入的狀態(tài)。
地址(URL):新的歷史記錄條目的地址。?
瀏覽器不會在調(diào)用pushState()方法后加載該地址,但之后,可能會試圖加載,例如用戶重啟瀏覽器。?
新的URL不一定是絕對路徑;如果是相對路徑,它將以當前URL為基準;?
傳入的URL與當前URL應該是同源的,否則,pushState()會拋出異常。?
該參數(shù)是可選的;不指定的話則為文檔當前URL。
replaceState()方法?
history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創(chuàng)建新的條目。
popstate事件?
每當激活的歷史記錄發(fā)生變化時,都會觸發(fā)popstate事件。如果被激活的歷史記錄條目是由pushState所創(chuàng)建,或是被replaceState方法影響到的,popstate事件的狀態(tài)屬性將包含歷史記錄的狀態(tài)對象的一個拷貝。
contenteditable屬性
在HTML5中,通過設(shè)置contenteditable屬性,任何元素都是可編輯的.,可以瞬間把你的網(wǎng)站變成wiki!
!DOCTYPE htmlhtml
body
div contenteditable="true"
This text can be edited by the user. ? ?/div
/body/html12345678
拖放
HTML5 的拖放 API 能夠支持在網(wǎng)站內(nèi)部和網(wǎng)站之間拖放項目。同時也提供了一個更簡單的供擴展和基于 Mozilla 的應用程序使用的 API。
拖放會觸發(fā)一系列拖放事件:dragstart、dragenter、dragover、dragleave等。
焦點管理
支持新的 HTML5 activeElement 屬性和 hasFocus 方法。
activeElement
document.activeElement:返回當前頁面中獲得焦點的元素,只讀。
很多情況下,該屬性會返回一個input或者textarea元素,于此同時,如果用戶在文本輸入框中選中了一些文本,還可以使用該元素的selectionStart和selectionEnd屬性獲得準確的選中文本內(nèi)容.
該屬性的值還可能是一個select元素(下拉菜單)或者type屬性為button,checkbox或radio的input元素.
通常,用戶可以通過Tab鍵來在頁面中可以獲得焦點的那些元素中切換,然后按下空格鍵激活這個元素
如果沒有某個元素獲得焦點,則該屬性的值為當前頁面中的body元素.?
截至目前只有firefox3.6支持。
hasFocus()
document.hasFocus() 方法返回一個 Boolean,表明當前文檔或者當前文檔內(nèi)的節(jié)點是否獲得了焦點。
設(shè)備訪問
使用camera API
可以參考什么是HTML5(二)中相關(guān)部分。
觸摸事件
略
使用地理位置定位
地理位置 API 允許用戶向 Web 應用程序提供他們的位置。出于隱私考慮,報告地理位置前會先請求用戶許可。
地理位置 API 通過 navigator.geolocation 提供。
獲取當前定位
可以調(diào)用 getCurrentPosition() 函數(shù)獲取用戶當前定位位置。?
這會異步地請求獲取用戶位置,并查詢定位硬件來獲取最新信息。當定位被確定后,定義的回調(diào)函數(shù)就會被執(zhí)行。
navigator.geolocation.getCurrentPosition(function(position) {
do_something(position.coords.latitude, position.coords.longitude);});123
檢測設(shè)備方向
越來越多支持web功能的設(shè)備擁有檢測自身方向的能力了;也就是說,這些設(shè)備可以記錄下其受地心引力作用下而在方向上產(chǎn)生變化的數(shù)據(jù)。
有兩種js事件負責處理方向信息。
DeviceOrientationEvent:會在加速度傳感器檢測到設(shè)備在方向上發(fā)生變化時觸發(fā)。
DeviceMotionEvent:會在加速度發(fā)生改變時觸發(fā)。
步驟一:在Citrix StoreFront里啟用 Receiver for HTML5
請跟隨如下步驟在XenDesktop7環(huán)境中啟用Receiver for HTML5。您需要登錄您的Delivery Controller并使用Citrix StoreFront management console,當然你也可以從Citrix Studio或者Citrix StoreFront console里進行。打開Citrix Studio management console,點擊Receiver for Web。
在中間窗格里,確保選擇了您想要的Store。
在右邊的窗格中,在Actions Store Web Receiver 點擊Deploy Citrix Receiver。
開啟Receiver for HTML5有三個選項:
Install locally
Use Receiver for HTML5 if local install fails
Always use Receiver for HTML5
選擇Use Receiver for HTML5 if local install fails。
步驟二:在Citrix Studio里啟用ICA WebSockets 連接策略。
在Citrix Studio配置完成后,在Citrix Studio management console里按照如下步驟開啟WebSockets策略。這里,您可以查看相eDocs:Modify an existing (default) policy。
在Citrix Studio里打開Policies。
在中間的窗格里,在Policies下修改現(xiàn)有的策略或者新建一個策略。
在右邊的窗格點擊Actions Edit Policy…。
在Edit Unfiltered窗口中輸入“WebSockets”并輕擊回車。您可以找到3條與WebSockets相關(guān)的策略設(shè)置。點擊每一條后面的Select。
1)獲取視頻流
添加一個HTML5的Video標簽,并將從攝像頭獲得視頻作為這個標簽的輸入來源
var video = document.getElementByIdx_x_x("video");
navigator.getUserMedia({video:true}, function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });
2)拍照
關(guān)于拍照功能,采用HTML5的Canvas實時捕獲Video標簽的內(nèi)容,Video元素能作為Canvas圖像的輸入
function scamera() {
var videoElement = document.getElementByIdx_x_x('video');
var canvasObj = document.getElementByIdx_x_x('canvas1');
var context1 = canvasObj.getContext('2d');
context1.fillStyle = "#ffffff";
context1.fillRect(0, 0, 320, 240);
context1.drawImage(videoElement, 0, 0, 320, 240);
}
3)圖片獲取
要從Canvas獲取圖片數(shù)據(jù),其核心思路是用canvas的toDataURL將Canvas的數(shù)據(jù)轉(zhuǎn)換為base64位編碼的PNG圖像
var imgData=canvas.toDataURL(“image/png”);
imgData格式如下:”data:image/png;base64,xxxxx“
真正圖像數(shù)據(jù)是base64編碼逗號之后的部分
轉(zhuǎn)載,僅供參考。