成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 新興的API——“其他新API”的注意要點(diǎn)

hosition / 983人閱讀

摘要:對象包括和以及失敗回調(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è)屬性:coordstimestamp。

coords:對象包括latitudelongitude以及accuracy

失敗回調(diào)函數(shù)接收error對象

error對象有codemessage兩個(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

相關(guān)文章

  • JavaScript DOM擴(kuò)展——“選擇符API和元素遍歷”注意要點(diǎn)

    摘要:實(shí)際上,的核心就是通過選擇符查詢文檔取得元素的引用。方法該方法接收一個(gè)選擇符,返回的是所有匹配的元素而不僅僅是一個(gè)元素。而其底層實(shí)現(xiàn)則類似于一組元素的快照,而非不斷對文檔進(jìn)行搜索的動(dòng)態(tài)查詢。 選擇符API Selector API Level1 的核心就是兩個(gè)方法:querySelector()和querySelectorAll()。實(shí)際上,jQuery的核心就是通過CSS選擇符查詢D...

    justCoding 評論0 收藏0
  • JavaScript DOM擴(kuò)展——“專有擴(kuò)展”注意要點(diǎn)

    摘要:另外,以及這兩個(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...

    wudengzan 評論0 收藏0
  • JavaScript Ajax與Comet——“其他跨域技術(shù)”注意要點(diǎn)

    摘要:由兩部分組成回調(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事件處理程序...

    Hwg 評論0 收藏0
  • React要點(diǎn)入門學(xué)習(xí)總結(jié)

    摘要:上面代碼中,通過為組件指定事件的回調(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...

    Towers 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<