js圖片上傳預(yù)覽兼容寫法

瀏覽器廠商不同,實現(xiàn)某種特定功能需要進行兼容處理,如圖片預(yù)覽,主流瀏覽器支持html5 FileReader,但是IE就****

1.FileReader

目前為止,firefox3.6+、 chrome6+、 Safari5.2+、 Opera11+、及IE10瀏覽器支持FileReader對象。

用法:

html

<input type="file" id="myfile">
<img src="" id="img" alt="">

js

<script>
ipt.onchange=function(){
        
    var f=new FileReader();//獲取FileReader實例對象

    f.readAsDataURL(myfile.files[0]);//讀取圖片base64數(shù)據(jù)

    f.onload=function(){//讀取完畢將結(jié)果賦值對象img src

        img.src=this.result;

    }

}
</script>

IE處理方式

比較欣慰的是IE中file表單可以獲取選中圖片的絕對路徑,不要急,有絕對路徑了,確不能直接賦值給img,因為除了IE6之外,由于安全問題直接設(shè)置img的src無法顯示本地圖片,但是可以通過濾鏡來實現(xiàn):

非IE6

myfile.select();
myfile.blur();
var reallocalpath = document.selection.createRange().text;
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + reallocalpath + "")";  
// 設(shè)置img的src為base64編碼的透明圖片 取消顯示瀏覽器默認圖片  
img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';  

IE6

myfile.select();
myfile.blur();
var reallocalpath = document.selection.createRange().text;
img.src=reallocalpath;

兼容處理完整代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <input type="file" id="myfile">
    <img src="" id="img" alt="">
</body>
<script>
    myfile.onchange=function(){
        if(window.FileReader){
            var f=new FileReader();
            f.readAsDataURL(myfile.files[0]);
            f.onload=function(){
                img.src=this.result;
            }
        }else{
            var isIE = navigator.userAgent.match(/MSIE/)!= null,  
            isIE6 = navigator.userAgent.match(/MSIE 6.0/)!= null;
            if(isIE) {  
                 myfile.select();
                 myfile.blur();
                 var reallocalpath = document.selection.createRange().text;
                // IE6瀏覽器設(shè)置img的src為本地路徑可以直接顯示圖片  
                if (isIE6) {  
                    img.src = reallocalpath;  
                }else {  
                    // 非IE6版本的IE由于安全問題直接設(shè)置img的src無法顯示本地圖片,但是可以通過濾鏡來實現(xiàn)  
                    img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + reallocalpath + "")";  
                    // 設(shè)置img的src為base64編碼的透明圖片 取消顯示瀏覽器默認圖片  
                    img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';  
                }  
            }   
        }
    }
</script>
</html>

加油!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 14,111評論 1 92
  • 序章 談?wù)劇盀g覽器兼容性”的問題?很多前端的面試或筆試中,都有比較籠統(tǒng)的“說說你所知道的各瀏覽器存在的兼容問題”,...
    麻辣小隔壁閱讀 3,156評論 1 57
  • 一:在制作一個Web應(yīng)用或Web站點的過程中,你是如何考慮他的UI、安全性、高性能、SEO、可維護性以及技術(shù)因素的...
    Arno_z閱讀 1,360評論 0 1
  • 學會使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,444評論 2 66
  • 我近期的目標是讓兒子快樂學習、提高的學習熱情和書寫的認真,提升學習成績,各科成績達到95分,為小升初打下堅實的基礎(chǔ)...
    歸韻閱讀 88評論 0 0

友情鏈接更多精彩內(nèi)容