1. 程式人生 > >判斷圖片是否載入完成的三種方式

判斷圖片是否載入完成的三種方式

有時需要獲取圖片的尺寸,這需要在圖片載入完成以後才可以。有三種方式實現,下面一一介紹。

一、load事件

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>img - load event</title> </head> <body> <img id="img1"src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> <p id="p1">loading...</p>
<script type="text/javascript"> img1.onload =function() { p1.innerHTML ='loaded' } </script> </body> </html>

測試,所有瀏覽器都顯示出了“loaded”,說明所有瀏覽器都支援img的load事件


二、readystatechange事件

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>img - readystatechange event</title>
</head> <body> <img id="img1"src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> <p id="p1">loading...</p> <script type="text/javascript"> img1.onreadystatechange =function() { if(img1.readyState=="complete"||img1.readyState=="loaded"){ p1.innerHTML ='readystatechange:loaded'
} } </script> </body> </html> readyState為complete和loaded則表明圖片已經載入完畢。測試IE6-IE10支援該事件,其它瀏覽器不支援。

三、img的complete屬性

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>img - complete attribute</title> </head> <body> <img id="img1"src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> <p id="p1">loading...</p> <script type="text/javascript"> functionimgLoad(img, callback) { vartimer = setInterval(function() { if(img.complete) { callback(img) clearInterval(timer) } }, 50) } imgLoad(img1,function() { p1.innerHTML('載入完畢') }) </script> </body> </html>

輪詢不斷監測img的complete屬性,如果為true則表明圖片已經載入完畢,停止輪詢。該屬性所有瀏覽器都支援。

onload方法

通過向img標籤新增onload屬性,並填入相應的函式來執行後續的javascipt程式碼。如下程式碼例子中img元素預設是不顯示的,通過onload判斷載入完成後再將圖片顯示出來。

<img class="pic1" onload="get(this)" src="..." style='display:none' />

<script type="text/javascript">
function get(ts){
	ts.style.display = 'block';  //顯示圖片
}</script>

優點:可以將javascript程式碼部分放置於頁面的任何部分載入,並且可以用於多數任意圖片上。使用比較簡單,易理解。

缺點:必須在每個標籤上都貼上onlaod屬性,在某些無法直接操作HTML程式碼,或者需要程式碼精簡的情況下不適用

javascipt原生方法

選取指定ID的圖片,通過onload指定回撥方法,在圖片載入完成後彈出“圖片載入已完成”字樣提示。

<img id="pic1" src="..." />

<script language="JavaScript">
    document.getElementById("pic1").onload = function () {
        alert("圖片載入已完成");
    }
</script>

優點:簡單易用,不影響HTML程式碼。

缺點:只能指定一個元素,javascipt程式碼必須置於圖片元素的下方

jquery方法

為每個class為pic1的圖片元素繫結事件,通過jquery的load方法,將元素漸現出來。

注意,不要在$(document).ready()裡繫結load事件。

<script type="text/javascript">
$(function(){
	$('.pic1').each(function() {
		$(this).load(function(){
			$(this).fadeIn();
		});
    });
})
</script>

優點:可以批量繫結元素事件,並且不影響HTML程式碼內容

缺點:需要jquery庫的支援,程式碼需要放置到需要操作元素的下方。


相關推薦

判斷圖片是否載入完成方式

有時需要獲取圖片的尺寸,這需要在圖片載入完成以後才可以。有三種方式實現,下面一一介紹。 一、load事件 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8">

vue-cli專案路由懶載入方式

閒嘮嗑幾句 今天公司有新的專案要開展,需要重新部署新的專案,所以說以前好多忘記的東西,又得重新撿起來一遍,配置路由的時候發現還是使用的普通的使用require懶載入路由,所以在檢視文件和資料後又重新總結了一遍,以加深記憶和方便下次查閱。 一、使用import非同步引入

JS非同步載入方式

非同步載入又叫非阻塞載入,瀏覽器在下載執行js的同時,還會繼續進行後續頁面的處理。主要有三種方式。 方法一:也叫Script DOM Element (function(){ var scriptEle = document.createElement("script"); script

web圖片載入的幾方式

類似H5和一些動畫元素都需要提前載入完一些圖片 如果圖片在使用之前就已經請求過了, 那麼再次使用的時候,就不會再去請求(ps:圖片路徑一樣)。 1.使用純的css進行圖片預載入

js判斷圖片是否載入完成

<span style="font-family:Microsoft YaHei;font-size:12px;"><!DOCTYPE html> <html lang

Unity實用小工具或指令碼—載入外部圖片方式

一、前言 專案上需要載入多個地圖,每個地圖的貼圖將近200M,所有地圖加起來貼圖將近2G。因此,想著能不能將貼圖放到工程外載入,逐研究了一下,得出了三種載入方式,分別是WWW載入、C#原生的IO載入在轉換成Texture2D和Assetbundle打包和載入。

載入外部圖片方式

二、IO檔案流載入 首先,同樣的是載入檔案路徑。然後開啟另外一個執行緒將圖片的位元組流載入到字典中。 /// <summary> /// 根據檔案路徑讀取圖片並轉換成byte /// </summary> /// <param name="pat

判斷python對象是否可調用的方式及其區別

asa 而不是 sha nbsp strong object 及其 返回 pes 基本上判斷python對象是否為可調用的函數,有三種方法: 1、使用內置的callable函數 callable(func) 用於檢查對象是否可調用,返回True也可能調用失敗,但是返回

判斷溢出的方式

真值表 img src blog bubuko body class 情況 info 1.一位符號位的情況 由真值表得:   方法一:   方法二: 2.兩位符號位的情況   方法三:   判斷溢出的三種方式

使用ajax發送文件的方式及預覽圖片的方法,上傳按鈕美化

absolut jquer 文件的 inpu headers return isp roc onchange 後端代碼 def upload(request): if request.method == "GET": return render(

MyBatis 延遲載入載入方式深入,你get了嗎?

延遲載入   延遲載入對主物件都是直接載入,只有對關聯物件是延遲載入。   延遲載入可以減輕資料庫的壓力,   延遲載入不可是一條SQL查詢多表資訊,這樣構不成延遲載入,會形成直接載入。   延遲載入分為三種類型: 1.直接載入 執行完主物件之後,直接執行關聯物件。 2.侵入式載入 在執行主物

android載入大量圖片記憶體溢位的解決辦法

方法一: 在從網路或本地載入圖片的時候,只加載縮圖。   /** * 按照路徑載入圖片 * @param path 圖片資源的存放路徑 * @param scalSize 縮小的倍數 * @return */ public s

[Python爬蟲]爬蟲例項:方式爬取PEXELS圖片

PEXELS:Best free stock photos in one place. Pexels是一個提供免費高品質圖片,並且可商用的圖片網站.但是因為網站時外國的,所以連線和下載速度都略慢… 這裡只是為了講解圖片爬取和下載儲存的流程. 三種方式是指:分別指使用Lxml,Be

vue webpack 懶載入方式

const router = new Router({     routes: [          {                path:

MarkDown插入圖片方式

MarkDown插入圖片的三種方式 插入本地圖片 只需要在基礎語法的括號中填入圖片的位置路徑即可,支援絕對路徑和相對路徑 ![avatar](/home/picture/1.png) 插入網路圖片 在基礎語法的括號中填入圖片

vue+element ui專案總結點(一)select、Cascader級聯選擇器、encodeURI、decodeURI轉碼解碼、一級mockjs用法、路由懶載入方式

不多說上程式碼: <template> <div class="hello"> <h1>{{ msg }}</h1> <p>Element UI簡單Cascader級聯選擇器使用</p> <

android圖片壓縮的方式

為了避免oom的出現,幾乎每個應用都會對大圖進行壓縮,我現在手頭做的產品就有很多地方用到,以前封裝工具類的時候,都是在網上找東找西,然後拼拼湊湊,有效果就行了,一直用的迷迷糊糊,這幾天工作比較閒,正好系統的總結梳理一下圖片壓縮方式: 圖片壓縮現在常見的有三種方式: 1、等比壓縮,等

as3+php上傳圖片方式

這裡的三種方式分別為: 1、二進位制傳輸(BINARY) 2、字串傳輸(String) 3、檔案流上傳(File) 開發IDE:FlashDevelop、Zend Studio。 1)設定FlashDevelop使用flash player10(debug版

【Android】一、Progress進度條實現的方式:主執行緒實現,Service載入,動態建立

前言 更新版本,上傳資料到服務端,都是需要進度顯示的,Android進度顯示兩種方式 ProgressDialog 和 ProgressBar 新版本中ProgressDialog不被推薦使用,所以專案採用ProgressBar 分為三種實現方式: 1、MainAct

flask載入配置的方式

from flask import Flask, json, jsonify from config_reg import Config app = Flask(__name__) # 實現形式1:匯入物件,物件中的配置資訊必須大寫:DEBUG=True # app.config.from_obj