摘要:對象包括和以及失敗回調(diào)函數(shù)接收對象對象有和兩個(gè)屬性可選對象接收一個(gè)對象對象內(nèi)容有以及該方法接收的參數(shù)與上面的一致。
早期的動(dòng)畫循環(huán)
在js中創(chuàng)建動(dòng)畫的典型方式就是用setInterval方法控制所有動(dòng)畫:
(function() { function animations() { //animations... } setInterval(animations, 100); })()
最平滑動(dòng)畫的最佳循環(huán)間隔是100ms/60,約為17ms;大多數(shù)電腦顯示器的刷新頻率是60Hz。
但是如果UI線程繁忙,比如忙于處理用戶操作,那么即使把代碼加入到列隊(duì)也不會立即執(zhí)行。
循環(huán)間隔的問題CSS的動(dòng)畫優(yōu)勢在于瀏覽器知道動(dòng)畫什么時(shí)候開始,因此會計(jì)算出正確的循環(huán)間隔,在恰當(dāng)?shù)臅r(shí)候刷新UI,而對于JavaScript動(dòng)畫,瀏覽器無從知曉什么時(shí)候開始。
目前,W3C已經(jīng)著手起草requestAnimationFrame()API。
Page Visibility API該API包括以下三個(gè)部分:
document.hidden:是否隱藏
document.visibilityState:4個(gè)可能的狀態(tài)值
后臺標(biāo)簽或最小化
前臺標(biāo)簽
實(shí)際頁面隱藏,但用戶看到頁面預(yù)覽
屏幕外執(zhí)行預(yù)渲染
visibilitychange事件
如:
document.addEventListener("visibilitychange", function () { console.log(document.hidden); });Geolocation API
navigator.geolocation這個(gè)對象包括三個(gè)方法:
getCurrentPosition:接收3個(gè)參數(shù)(成功回調(diào)函數(shù)、可選的失敗回調(diào)函數(shù)、可選的選項(xiàng)對象)
成功回調(diào)函數(shù)會接收到一個(gè)Position對象參數(shù),該對象有兩個(gè)屬性:coords和timestamp。
coords:對象包括latitude和longitude以及accuracy
失敗回調(diào)函數(shù)接收error對象
error對象有code和message兩個(gè)屬性
可選對象接收一個(gè)對象:對象內(nèi)容有enableHighAccuracy、timeout以及maximumAge
watchPosition:該方法接收的參數(shù)與上面的一致。配合clearWatch方法使用,類似setTimeout和clearTimeout
clearWatch
如:
navigator.geolocation.getCurrentPosition(function(position) { do_something(position.coords.latitude, position.coords.longitude); //第一個(gè)參數(shù)為成功的回調(diào)函數(shù) }); navigator.geolocation.getCurrentPosition(function(position) { console.log(position.coords.latitude); console.log(position.coords.timestamp); }, function(err) { //第二個(gè)參數(shù)為失敗的回調(diào)函數(shù) console.log("Error code: " + err.code); console.log("Error message: " + err.message); }); navigator.geolocation.getCurrentPosition(function(position) { console.log(position.coords.latitude); console.log(position.coords.timestamp); }, function(err) { console.log("Error code: " + err.code); console.log("Error message: " + err.message); }, { //第三個(gè)參數(shù)接收對象 enableHighAccuracy: true, timeout: 1000, maximumAge: 30000 });File API
HTML5 DOM中添加了元素files集合,通過文件輸入字段選擇一個(gè)或多個(gè)文件,files集合中將包括一組File對象,每個(gè)File對象對應(yīng)著一個(gè)文件,每個(gè)File對象有下面的只讀屬性:
name:本地文件系統(tǒng)中的文件名
size:文件的字節(jié)大小
type:字符串,文件的MIME類型
lastModifiedDate:字符串,上次文件被修改的事件
如:
var files = document.getElementById("files"); files.onchange = function () { var list = event.target.files; //FileList對象 // console.log(list); //name: lastModified: lastModifiedDate: webkitRelativePath: for (var i = 0, len = list.length; i < len; i++) { console.log("name: " + list[i].name + "; type: " + list[i].type + "; size: " + list[i].size + "bytes"); //name: opening.png; type: image/png; size: 324991bytes }; };FileReader
瀏覽器都支持前兩個(gè)方法:
readAsText;
readAsDataURL
readAsBinaryString
readAsArrayBuffer
如下例子:
var files = document.getElementById("files"); files.onchange = function() { var files = event.target.files, info = "", output = document.getElementById("output"), type = "default", reader = new FileReader(); if (/image/.test(files[0].type)) { reader.readAsDataURL(files[0]); type = "image"; } else { reader.readAsText(files[0]); type = "text"; } reader.onerror = function () { output.innerHTML = "Could not read, error: " + reader.error.code; }; reader.onprogress = function () { if (event.lengthComputable) { output.innerHTML = event.loaded + "/" + event.total; } }; reader.onload = function () { var html = ""; switch (type) { case "image": html = ""; break; case "text": html = reader.result; break; } output.innerHTML = html; }; };
如果想中斷則需要調(diào)用abort方法。
讀取部分內(nèi)容Blob的實(shí)例,slice()方法
blob.slice(startByte, length)
對象URL引用保存在File或Blob中數(shù)據(jù)的URL:
window.URL.createObjectURL()方法
要釋放內(nèi)存則把對象URL傳給:
window.URL.revokeObjectURL()方法
拖放文件var droptarget = document.getElementById("drop"); droptarget.addEventListener("dragenter",function () { event.preventDefault(); }); droptarget.addEventListener("dragover",function () { event.preventDefault(); }); droptarget.addEventListener("drop",function () { event.preventDefault(); var file = event.dataTransfer.files[0]; console.log(file.name) });
在drop事件中,可以通過event.dataTransfer.files讀取文件信息。
XHR方法上傳文件略
data = new FormData(); ... data.append("file" + i, files[i]); ... xhr.send(data);Web 計(jì)時(shí)
Web Timing API
window.performance對象
PerformanceNavigation.redirectCount
type
performance.timing屬性
navigationStart
unloadEventStart
unloadEventEnd
redirectStart
redirectEnd
fetchStart
domainLookupStart
domainLookupEnd
connectStart
connectEnd
secureConnectionStart
requestStart
responseStart
responseEnd
domLoading
domInteractive
domContentLoadedEventStart
domContentLoadedEventEnd
domComplete
loadEventStart
loadEventEnd
toJSON
Web Workers略
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78984.html
摘要:實(shí)際上,的核心就是通過選擇符查詢文檔取得元素的引用。方法該方法接收一個(gè)選擇符,返回的是所有匹配的元素而不僅僅是一個(gè)元素。而其底層實(shí)現(xiàn)則類似于一組元素的快照,而非不斷對文檔進(jìn)行搜索的動(dòng)態(tài)查詢。 選擇符API Selector API Level1 的核心就是兩個(gè)方法:querySelector()和querySelectorAll()。實(shí)際上,jQuery的核心就是通過CSS選擇符查詢D...
摘要:另外,以及這兩個(gè)方法,在測試了一下,并無反應(yīng)。不知是否兼容問題。下面是獲得焦點(diǎn)的時(shí)候,自動(dòng)以每毫秒的速度往下滾屏 文檔模式 頁面的文檔模式是由IE8引入的,文檔模式?jīng)Q定了可以使用的CSS級別、JS中的API以及如何對待文檔類型(doctype);在IE9,提供了4中文檔模式: IE5:混雜模式; IE7:IE7標(biāo)準(zhǔn)模式渲染頁面; IE8:IE8標(biāo)準(zhǔn)模式渲染頁面,可以使用Selecto...
摘要:由兩部分組成回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中調(diào)用的函數(shù),回調(diào)函數(shù)的名字一般是在請求中指定的。下面是以個(gè)的例子回調(diào)函數(shù)的名字就是是通過動(dòng)態(tài)的元素來使用的,使用時(shí)可以為屬性指定一個(gè)跨域。是為與其他傳遞消息的很相似。 圖像Ping技術(shù) 根據(jù)一個(gè)網(wǎng)頁可以從任何網(wǎng)頁中加載圖像而不用擔(dān)心使用跨域的原理, 我們可以動(dòng)態(tài)的創(chuàng)建圖像, 使用他們的onload和onerror事件處理程序...
摘要:上面代碼中,通過為組件指定事件的回調(diào)函數(shù),確保了只有等到真實(shí)發(fā)生事件之后,才會讀取屬性。七表單代碼九要點(diǎn)文本輸入框的值,不能用讀取,而要定義一個(gè)事件的回調(diào)函數(shù),通過讀取用戶輸入的值。 一.JSX簡介 JSX即JavaScript XML,一種在React組件內(nèi)部構(gòu)建標(biāo)簽的類XML語法。在不使用JSX的情況下,React程序中創(chuàng)建DOM是這樣的: //v0.11 React.DOM.h1...
閱讀 950·2021-09-27 13:36
閱讀 905·2021-09-08 09:35
閱讀 1075·2021-08-12 13:25
閱讀 1447·2019-08-29 16:52
閱讀 2915·2019-08-29 15:12
閱讀 2737·2019-08-29 14:17
閱讀 2623·2019-08-26 13:57
閱讀 1021·2019-08-26 13:51