1. 程式人生 > >IE8瀏覽器中Image物件onload失效的解決辦法

IE8瀏覽器中Image物件onload失效的解決辦法

作為WEB設計者,為了在網頁展示上加強使用者體驗,經常會利用圖象載入顯示狀態方法,這自然需要Image物件的onload事件。 在firefox瀏覽器下完成開發後,可是在IE瀏覽器中進行除錯總不能被呼叫。不管是最新版的IE8還是舊版本的IE7IE6都無效,最初的程式碼簡化後如下:

var img = new Image();
img.src = "test.gif";
img.onload = function(){
    alert(this.src);
    //other      
};

簡單看過以後貌似這段程式碼沒有什麼問題,可是IE下就不是能正常的執行。不管怎麼檢測,IE根本不會理會,不過還是找到了解決的方法,原理如下:
圖片下載時,瀏覽器會把圖片快取起來,再次載入此圖片時就會從緩衝區里加載。
那麼如果圖片已經在快取區了,是不是從緩衝區里加載的圖片就不觸發onload事件呢?
測試……

var img = new Image();
img.onload = function(){
    alert(this.src);
    //other    
};
img.src = "test.gif";

測試成功!

結論:應該把onload寫到src前面,先告訴瀏覽器圖片載入完要怎麼處理,再讓它去載入圖片。 所以,不是IE瀏覽器不會觸發onload事件,而是因為載入緩衝區的速度太快,在沒有告訴它載入完要怎麼辦時,它已經載入完了。反過來說,firefox明顯更智慧一些,加入onload事件後,firefox瀏覽器會檢測緩衝區是否已經有此圖片,有的話直接就觸發此事件!

相關推薦

IE8瀏覽器Image物件onload失效解決辦法

作為WEB設計者,為了在網頁展示上加強使用者體驗,經常會利用圖象載入顯示狀態方法,這自然需要Image物件的onload事件。 在firefox瀏覽器下完成開發後,可是在IE瀏覽器中進行除錯總不能被呼叫。不管是最新版的IE8還是舊版本的IE7和IE6都無效,最初的程式碼簡

解決nth-child(n)屬性在IE8瀏覽器相容性問題

因為在專案中用到了nth-child(n)屬性,如下所示 .level1 span:nth-child(2) { margin-left: 24px !important; }而該屬性卻在IE8瀏覽器中出現相容性問題,後面參考相關資料得知,可以使用以下方式處理在IE

關於vue專案在低版本瀏覽器不支援ES6的解決方案

原因:低版本瀏覽器核心版本太低,無法解析 ES2015最新的一些語法。 babel是一個轉譯器,把同種語言的高版本規則翻譯成低版本規則 一般搭建專案時webpack會在最外層配置一個.babelrc檔案用於預設解析ES2015(es6)中的特殊語法(例如: le

vue2.0專案使用CSS3 animation動畫在安卓手機上失效解決辦法

vue2.0 + webpack做移動端專案,如果在專案中使用了CSS3 animation動畫屬性,會發現在ios上完全沒問題,但是在安卓手機上依然失效,儘管把animation在五大瀏覽器各種相容都

ie7,ie8下 使用絕對定位的a標籤點選失效解決辦法

今天無意間發現一個使用絕對定位的a標籤在ie7,ie8下點選失效解決辦法,查了一下原來竟是醬紫的,又get到了一個新的技能。 以下是問題解決的辦法: 這種時候有兩種解決方法(主要是針對a標籤不能設定背景情況): 1、給a標籤新增樣式:background:url(ab

applet在IE瀏覽器不能顯示的解決方案

剛剛學APPLET的可能都有過這樣的尷尬經歷,applet編譯好了,相應的程式碼也加入了html中,當在IE中開啟時,卻只有一塊灰色區域,狀態條顯示class not found 之類的錯誤資訊。用java sdk 自帶的appletviewer 程式檢視applet ,卻能

雙擊事件失效解決辦法

dev out == pre clear win settime prev gettime 某些時候,雙擊事件會失效,模擬辦法解決雙擊失效後,而同時我又不想在該元素上觸發兩次單擊事件,解決辦法如下: var dbclickTime={ prev:0, next:0//模擬

MyEclipse代碼編輯器漢字太小的解決辦法(中文看不清)

window eclips nts reference edit col fonts ren cli 問題描述:新安裝的myeclipse 2014,代碼編輯器中漢字很小看不清解決辦法:調整字體即可。通過菜單Windows——Preferences,

Gitbook 生成 pdf 文字體錯亂問題解決辦法

開發 沒有 tex spa 語句 auth 希望 node 遺憾 Gitbook 生成 pdf 中文字體錯亂問題解決辦法 用過 Gitbook 的都知道, Gitbook 會自動生成 pdf 以提供下載, 但十分遺憾的是自動生成的 pdf 對中文的支持並不好, 經常

上周研發出現的問題及解決辦法

temp for 打包 mvn clean chan 人的 找到 ring 沒有 1、用RestTemplate.postForObject方法調用別人提供的POST接口的時候,無法調用。 經過仔細檢查,發現是由於我傳給別人的json格式調用參數中一個成員的數據類型和要求的

使用python出現的錯誤及解決辦法

python【問題1】在編譯安裝完Python後,不能正常使用yum,使用yum出現以下錯誤[[email protected]/* */ bin]# yum File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

Yum database disk image is malformed 錯誤 解決辦法

yumyum install xxx 時出現: database disk image is malformed解決辦法:yum clean dbcache Yum database disk image is malformed 錯誤 解決辦法

php+Mysql網頁出現亂碼的解決辦法詳解

用戶 編碼 utf8 你是 nec ssa 臺灣 test sel $conn = mysql_connect("$host","$user","$password");mysql_query("SET NAMES ‘UTF8‘");mysql_select_db("$da

UpdatePanel失效解決辦法

ane 指定 eve button con 頁面 添加 post 失效 在UpdatePanel標簽下,加入Triggers <Triggers><asp:PostBackTrigger ControlID="Button2" /></Trig

關於數據庫新建用戶提示“用戶、組或角色‘’XXX‘’在當前數據庫已已存在”的解決辦法

想要 detail 通過 同名 csdn 出現 upd 文件中 例如 一般在還原數據庫後,給這個數據庫添加一個登錄名時出現。 例如數據庫備份文件中已經包含了用戶abc,現在還原了數據庫,然後發現現有數據庫中沒有abc這個用戶,想要新建一個abc用戶,作為該數據庫的owner

Matlab2015b激活失效解決辦法

1-n post 問題 pos rac 描述 body nbsp 正常 問題描述:Matlab 一直都是正常使用,今天打開時,出現了激活的界面,無法正常使用,重新導入license 文件,也一直失敗。解決辦法: 將之前用到的crack中的license_R2015b.lic

linux學習工作遇到的問題及解決辦法

ins anaconda error: get require yun 4.5 all system 1、yum install system-config-kickstart Error: Package: system-config-date-1.9.60-3.

centOS外部瀏覽器無法訪問tomcat8000端口解決辦法

res 保存 tomcat8 使用 OS service restart conf sta 防火墻開放特定端口 (iptables) 查看狀態:iptables -L -n下面添加對特定端口開放的方法:使用iptables開放如下端口/sbin/iptables -I I

python3.7mysqlclient安裝錯誤的解決辦法

http text 14. 如何選擇 status 圖片 visual ESS shadow 近期,安裝mysqlclient一直報錯,導出找資料,琢磨,大致解決如下:一、錯誤提示_mysql.c(29): fatal error C1083: 無法打開包括文件: “mys

springboot @vaule註解失效解決辦法

zed 便在 pub one div sync lose 方法 問題 在Controller類裏面通過@Value將參數註入進來,最後的確成功了。因此基於此經驗,我便在其他使用的類裏面也采用這樣的方式註入參數,但是發現去失效了,報錯為NULL,說明參數並沒有我們料想的被註入