1. 程式人生 > >js圖片快取即img的onload事件與complete屬性之間關係

js圖片快取即img的onload事件與complete屬性之間關係

在很多情況下需要快速的顯示圖片到頁面上。但是圖片載入是需要一定時間的。

這樣就需要對圖片進行預載入工作。

關鍵是img的onload事件與complete屬性。

onload是圖片載入完成執行的事件,complete屬性是圖片顯示出來以後為true。

那麼在onload之前complete肯定是false的,這個毋庸置疑。那麼我們就可以在onload事件內部判斷complete屬性是否為true。

如果為true那麼代表圖片真正的載入成功,否則可以重新載入。

上面是實現思路,接下來我們寫一個小demo:

var l =5;
var Images = new Array(l);
var ImgLoaded 
=0; //設定載入佇列 function LoadImgs() { for(var i=0;i<Images.length;i++){ Images[i]=new Image(); downloadImage(i); } } //載入單個圖片檔案 function downloadImage(i) { var imageIndex = i+1; //圖片以1開始 Images[i].src = "images/"+imageIndex+".jpg"; Images[i].onLoad=validateImages(i); } //驗證是否成功載入完成,如不成功則重新載入
function validateImages(i){ if (!Images[i].complete) { window.setTimeout('downloadImage('+i+')',200); } else if (typeof Images[i].naturalWidth != "undefined" && Images[i].naturalWidth == 0) { window.setTimeout('downloadImage('+i+')',200); } else { ImgLoaded
++ if(ImgLoaded == l) { alert('圖片載入完畢!'); } } }
LoadImgs();//在目錄內images資料夾下模擬1-5.jpg,或者修改地址也可以。

相關推薦

js圖片快取img的onload事件complete屬性之間關係

在很多情況下需要快速的顯示圖片到頁面上。但是圖片載入是需要一定時間的。 這樣就需要對圖片進行預載入工作。 關鍵是img的onload事件與complete屬性。 onload是圖片載入完成執行的事件,complete屬性是圖片顯示出來以後為true。 那麼在onload之前

ImageLoader圖片快取之簡單配置詳細配置

ImageLoader依賴 implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 1.簡單配置 public class App extends Applicati

關於Android中圖片大小、記憶體佔用drawable資料夾關係的研究分析

研究內容研究方法測試環境研究過程結果分析結論 研究內容 本篇內容主要探討以下場景:同一張圖片,放置在不同的drawable資料夾,在同一裝置上執行,對圖片大小及記憶體佔用有什麼影響。 研究方法 控制變數法分析法 測試環境 採用錘子T1手機(1080*

利用JS 事件 Cnavas繪圖 以及 H5 快取寫的一個手勢解鎖(一)

之前參加360前端實習生 星計劃時,遇到一個任務,就是利用H5 localStorage實現密碼的存入和獲取。當時還沒有學canvas 繪圖,感覺利用原生JS和CSS實現比較複雜;這次剛好看了JS高程的Canvas繪圖,所以正好可以理論與實踐結合一下,試著做了一

js圖片輪播索引變色

shu gin 標題 solid ansi name 素材 ++ 切換 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/

onload事件ready事件的區別,原生jsjquery的區別

onload事件與ready事件分別是原生js與jquery的入口函式 原生js入口函式寫法: window.onload=function(){ } jquery入口函式寫法: $(document).ready(function(){ });   二者的區別主要有:  

JS 基礎篇(六):事件冒泡捕獲

目錄: 一、事件冒泡 微軟提出了名為事件冒泡(event bubbling)的事件流。事件冒泡可以形象地比喻為把一顆石頭投入水中,泡泡會一直從水底冒出水面。也就是說,事件會從最內層的元素開始發生,一直向上傳播,直到document物件。 <html>

Python-JS事件面向物件操作

目錄一、函式高階 迴圈繫結: 使用迴圈繫結會出現的問題及解決方案:二、面向物件 3、建構函式(ES5)三、JS選擇器 1、getElement系列(最嚴謹) 2、querySelector系列(最方便) 3、通過id名直接獲取 4.JS中操作頁面標籤全域性屬性,對映到

JS事件

交互 move list dev func win 分配 onchange window 事件是用戶在瀏覽器執行的某種動作。一個完整的JS事件流從window開始最後window。事件負責在javaScript和DOM之間交互。事件流事件流描述的是從頁面中接受事件的順序。事

Android實現圖片快取非同步載入

ImageManager2這個類具有非同步從網路下載圖片,從sd讀取本地圖片,記憶體快取,硬碟快取,圖片使用動畫漸現等功能,已經將其應用在包含大量圖片的應用中一年多,沒有出現oom。 Android程式常常會記憶體溢位,網上也有很多解決方案,如軟引用,手動呼叫recycle

js生成二維碼以及其它圖片合成一張

通過qrcode.js實現 <html> <head> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable

(微信小程式)關於require引入JS裡 wx.getStorageSync()無法即時獲取快取內容的分析記錄

先交代問題場景:       LZ要做一個小程式內資料切換功能,即在首頁做一個按鈕,點選了之後切換全部接口裡的一個請求引數值。(即將該值由A改為B)。  OK ,  很自然的想到了利用本地快取。      一切都是那麼的順利,將全域性的介面地址修改為從快取中獲取該值之後,

模仿微信朋友圈 圖片瀏覽 js javascript 支援圖片預覽,滑動切換,雙指縮放,圖片快取

previewImage-mobile 仿微信js-sdk wx.previewImage javascript實現,支援圖片預覽,滑動切換,雙指縮放,圖片快取; it is a plugin previewImage for mobile html5

ASP.net解決CSSJS快取問題

前言 筆者前幾個月沒怎麼寫部落格,現在實習工作也4周了,開始規定自己每週寫一篇,主要目的是為了總結一下工作中遇到的問題與解決方法以及涉及到的知識,並與大家分享;順便的鍛鍊下自己的語言表達能力,這個在工作中真是太重要的,很多時候只要可以把問題清楚的描述出來,就等

APP圖片快取Glide之signature的分析

1.圖片快取遇到的問題 在快取網路圖片的過程中,有一種情況是圖片的地址不變,但圖片發生了變化,如果只按照圖片的地址進行快取,在載入快取中的圖片時就會發生圖片一直顯示為舊圖的現象。 在App中修改使用者頭像的功能中,如果伺服器儲存頭像的地址保持不變,載入快取就會出現上述的情

Android 獲取遠端圖片本地圖片快取

 對圖片來說,你不可能讓應用每次獲取的時候都重新到遠端伺服器去下載,特別是顯示ListView中的圖片的時候,滑動的速度變得很快,這樣將會造成ANR,即使圖片比較小,但是圖片還沒來得及釋放的話,累計的圖片將會佔用比較大的記憶體,但是又不能將所有的圖片資源在獲取之後放在記憶體中,使用弱引用儲存物件的方法儲存,因

js android 的互動(方法互呼叫) 和android向 js傳遞值, js向android傳引數 事件攔截看上一篇

mail_detail_v2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewpor

基於python-flask搭建後臺,HTML+CSS+JS(jQuery)寫前端的web全棧開發(三)——3.2 普通按鈕點選事件後臺互動

    在上一篇文章,我們講解了基於外掛實現的上傳圖片到後臺處理,並將處理後得到的結果圖與原圖在前端顯示。    主要idea是將圖片先在後臺進行快取,我們傳回兩張圖片的途徑,在file的done函式中對<img/>標籤的src屬性進行更新。    但是這樣子存在

Android圖片快取分析優化

protected int sizeOf(String key, Drawable value) { if(value!=null) { if (value instanceof BitmapDrawable) { Bitmap bitmap = ((BitmapDraw

js、jQuery,相容IEfirefox火狐的回車事件

js <script> document.onkeydown=function(event) { e = event ? event : (window.event ? window.event : null); if(e.keyCode==13){ //執行的