HTML img標籤之onAbort、onError、onLoad事件與問題
img標籤在使用的時候 一下幾個事件非常的有用:
onError:當圖片載入出現錯誤,會觸發 經常在這裡事件裡頭寫入 將圖片導向預設報錯圖片,以免頁面上出現紅色的叉叉
onLoad:事件是當圖片載入完成之後觸發
onAbort:圖片載入的時候,使用者通過點選停止載入(瀏覽器上的紅色叉叉)時出發,通常在這裡觸發一個提示:“圖片正在載入”
很好的利用這3個事件可以在HTML中實現很多圖片的功能
例如:處理圖片載入失敗情況:<img src="image/1.jpg" width="258" height="178" οnerrοr="this.src='images/isets.jpg'" />
IMG的onerror自動選擇最快線路,根據伺服器返回 錯誤:
<img src="http://dianxin.xxx.com/NotExistsUrl" width="1" height="1"
οnerrοr="location.top.url='http://dianxin.xxx.com/'"/>
<img src="http://wangtong.xxx.com/NotExistsUrl" width="1" height="1"
οnerrοr="location.top.url='http://wangtong.xxx.com/'"/>
例如,你可能會利用這個onAbort訊息來警告使用者,提醒他們停止某個重要影像的載入,例如影像對映:
<img src="pics/camnpr.gif" usemap="#map1" onAbort="window.alert('注意:這張照片含有重要的連結,請重新載入.')">
同時有另一個問題出現:如果οnerrοr="this.src='圖片'",這個"圖片"也不存在時,就會出現下邊的錯誤:
img圖片沒找到onerror事件 Stack overflow at line: 0
開啟網頁時提示 Stack overflow at line: 0。我做了截圖如下:
[img]http://www.camnpr.com/articles/common/upload/2010/10/13/162131ef.png[/img]
經過分析,發現網頁中存在類似如下的程式碼:
<img src="pic.gif" οnerrοr="javascript:this.src='/noPic.gif';" alt="pic" />
分析:特別注意 onerror,當圖片不存在時,將觸發 onerror,而 onerror 中又為 img 指定一個 NoPic.gif 圖片。也就是說圖片存在則顯示 pic.gif,圖片不存在將顯示
noPic.gif。但問題來了,如果 noPic.gif 也不存在,則繼續觸發 onerror,導致迴圈,故出現錯誤。
說明:如果圖片存在,但網路很不通暢,也可能觸發 onerror。
解決方法:第一種::.去掉 onerror 程式碼;或者更改 onerror 程式碼為其它;或者確保 onerror 中的圖片足夠小,並且存在。
第二種:
<script type="text/javascript">
<!--
function nofind(){
var img=event.srcElement;
img.src="../icon/default.gif";
img.οnerrοr=null; 控制不要一直跳動
}
//沒有找到時 用事件獲取 一個一個獲取
//-->
</script>
<td align="center"><img src="../icon/${file.suffix }.gif" οnerrοr="nofind();" />${file.name }</td>
第三種:
使用兩個<img />
<style type="text/css">
.hidden {
display: none;
}
</style>
<img src="camnpr.jpg" οnerrοr="this.class='hidden';xx.class=''" />
<img src="camnpr.jpg" class="hidden" />
onError:當圖片載入出現錯誤,會觸發 經常在這裡事件裡頭寫入 將圖片導向預設報錯圖片,以免頁面上出現紅色的叉叉
onLoad:事件是當圖片載入完成之後觸發
onAbort:圖片載入的時候,使用者通過點選停止載入(瀏覽器上的紅色叉叉)時出發,通常在這裡觸發一個提示:“圖片正在載入”
很好的利用這3個事件可以在HTML中實現很多圖片的功能
例如:處理圖片載入失敗情況:<img src="image/1.jpg" width="258" height="178" οnerrοr="this.src='images/isets.jpg'" />
IMG的onerror自動選擇最快線路,根據伺服器返回 錯誤:
<img src="http://dianxin.xxx.com/NotExistsUrl" width="1" height="1"
οnerrοr="location.top.url='http://dianxin.xxx.com/'"/>
<img src="http://wangtong.xxx.com/NotExistsUrl" width="1" height="1"
οnerrοr="location.top.url='http://wangtong.xxx.com/'"/>
例如,你可能會利用這個onAbort訊息來警告使用者,提醒他們停止某個重要影像的載入,例如影像對映:
<img src="pics/camnpr.gif" usemap="#map1" onAbort="window.alert('注意:這張照片含有重要的連結,請重新載入.')">
同時有另一個問題出現:如果οnerrοr="this.src='圖片'",這個"圖片"也不存在時,就會出現下邊的錯誤:
img圖片沒找到onerror事件 Stack overflow at line: 0
開啟網頁時提示 Stack overflow at line: 0。我做了截圖如下:
[img]http://www.camnpr.com/articles/common/upload/2010/10/13/162131ef.png[/img]
經過分析,發現網頁中存在類似如下的程式碼:
<img src="pic.gif" οnerrοr="javascript:this.src='/noPic.gif';" alt="pic" />
分析:特別注意 onerror,當圖片不存在時,將觸發 onerror,而 onerror 中又為 img 指定一個 NoPic.gif 圖片。也就是說圖片存在則顯示 pic.gif,圖片不存在將顯示
noPic.gif。但問題來了,如果 noPic.gif 也不存在,則繼續觸發 onerror,導致迴圈,故出現錯誤。
說明:如果圖片存在,但網路很不通暢,也可能觸發 onerror。
解決方法:第一種::.去掉 onerror 程式碼;或者更改 onerror 程式碼為其它;或者確保 onerror 中的圖片足夠小,並且存在。
第二種:
<script type="text/javascript">
<!--
function nofind(){
var img=event.srcElement;
img.src="../icon/default.gif";
img.οnerrοr=null; 控制不要一直跳動
}
//沒有找到時 用事件獲取 一個一個獲取
//-->
</script>
<td align="center"><img src="../icon/${file.suffix }.gif" οnerrοr="nofind();" />${file.name }</td>
第三種:
使用兩個<img />
<style type="text/css">
.hidden {
display: none;
}
</style>
<img src="camnpr.jpg" οnerrοr="this.class='hidden';xx.class=''" />
<img src="camnpr.jpg" class="hidden" />
相關文章
- 解決img標籤與其它標籤間隙問題?
- HTML中IMG標籤總結HTML
- HTML之常用標籤HTML
- HTML之表格標籤HTML
- HTML之框架標籤HTML框架
- 使用img的onerror事件來繫結圖片異常時的處理Error事件
- HTML之簡單標籤HTML
- HTML之表單標籤HTML
- html指令碼 標籤與HTML指令碼
- HTML 標籤與佈局HTML
- Laravel 解決blade模板轉義html標籤問題LaravelHTML
- HTML 基本骨架與常用標籤HTML
- 課時21.img標籤(掌握)
- html標籤HTML
- HTML <a> 標籤HTML
- HTML標籤之form,input,button,tableHTMLORM
- HTML5 之語義標籤HTML
- Web前端技術分享:img標籤下方出現空隙的問題解決方案Web前端
- HTML 標籤與屬性大小寫HTML
- HTML標籤(基本標籤的使用)HTML
- 小技巧系列:正則匹配img標籤
- Image onload 事件事件
- 前端html:標籤前端HTML
- 01 HTML標籤HTML
- html排版標籤HTML
- HTML <figcaption> 標籤HTMLGCAPT
- HTML <dialog> 標籤HTML
- HTML <time> 標籤HTML
- HTML <aside> 標籤HTMLIDE
- HTML <article> 標籤HTML
- HTML <section> 標籤HTML
- HTML <main> 標籤HTMLAI
- HTML <var> 標籤HTML
- HTML <canvas> 標籤HTMLCanvas
- HTML常用標籤HTML
- html標籤整理HTML
- HTML 常用標籤HTML
- HTML <header> 標籤HTMLHeader
- HTML <footer> 標籤HTML