js點滴 JavaScript進度事件09

2021-07-24 13:56:33 字數 2812 閱讀 9036

進度事件用來描述乙個事件進展的過程,比如xmlhttprequest物件發出的http請求的過程、

、、

進度事件有以下幾種。

abort事件:當進度事件被中止時觸發。如果發生錯誤,導致程序中止,不會觸發該事件。

error事件:由於錯誤導致資源無法載入時觸發。

load事件:進度成功結束時觸發。

loadstart事件:進度開始時觸發。

loadend事件:進度停止時觸發,發生順序排在error事件\abort事件\load事件後面。

progress事件:當操作處於進度之中,由傳輸的資料塊不斷觸發。

timeout事件:進度超過限時觸發。

image.addeventlistener('load', function

(event) );

image.addeventlistener('error', function

(event) );

上面**在元素載入完成後,為元素的class屬性新增乙個值「finished」。如果載入失敗,就把元素的樣式設定為不顯示。

有時候,載入會在指令碼執行之前就完成,尤其是當指令碼放置在網頁底部的時候,因此有可能使得load和error事件的監聽函式根本不會被執行。所以,比較可靠的方式,是用complete屬性先判斷一下是否載入完成。

function

loaded

() if (image.complete) else

由於dom沒有提供像complete屬性那樣的,判斷是否發生載入錯誤的屬性,所以error事件的監聽函式最好放在img元素的html屬性中,這樣才能保證發生載入錯誤時百分之百會執行。

src="/wrong/url"

onerror="this.style.display='none';" />

error事件有乙個特殊的性質,就是不會冒泡。這樣的設計是正確的,防止引發父元素的error事件監聽函式。

進度事件使用progressevent物件表示。progressevent例項有以下屬性。

lengthcomputable:返回乙個布林值,表示當前進度是否具有可計算的長度。如果為false,就表示當前進度無法測量。

loaded:返回乙個數值,表示當前進度已經完成的數量。該屬性除以total屬性,就可以得到目前進度的百分比。

loadend事件的監聽函式,可以用來取代abort事件/load事件/error事件的監聽函式。

req.addeventlistener("loadend", loadend, false);

function

loadend

(e)

loadend事件本身不提供關於進度結束的原因,但可以用它來做所有進度結束場景都需要做的一些操作。

瀏覽器提供乙個progressevent建構函式,用來生成進度事件的例項。

progressevent = new progressevent(type, );
上面**中,progressevent建構函式的第乙個引數是事件型別(字串),第二個引數是配置物件,用來指定lengthcomputable屬性(預設值為false)、loaded屬性(預設值為0)、total屬性(預設值為0)。

JS實現繼承 JavaScript

定義乙個父類 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 複製 1.原型鏈繼承核心 將父類的例項作為子類的原型 function cat cat.prototype new animal cat.proto...

js點點滴滴 二

1.靜態作用域與動態作用域 作用域是指程式原始碼中定義變數的區域.作用域規定了如何查詢變數,野牛是確定當前執行 對變數的訪問許可權.j ascript 採用詞法作用域 lexical scoping 也就是靜態作用域.靜態作用域 函式的作用域在函式定義的時候就決定了.動態作用域 函式的作用域是在函式...

js點點滴滴 一

1.break和continue搭配標籤使用 以前只知道break能夠跳出迴圈,continue是結束本次迴圈,其實,break和continue還有一種不同的使用方法 搭配標籤使用,即break 標籤名 continue 標籤名 先來寫乙個結束本次迴圈的demo var arr new array...