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

index

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

瀏覽器廠商不同,實(shí)現(xiàn)某種特定功能需要進(jì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實(shí)例對象

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

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

        img.src=this.result;

    }

}
</script>

IE處理方式

比較欣慰的是IE中file表單可以獲取選中圖片的絕對路徑,不要急,有絕對路徑了,確不能直接賦值給img,因?yàn)槌薎E6之外,由于安全問題直接設(shè)置img的src無法顯示本地圖片,但是可以通過濾鏡來實(shí)現(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編碼的透明圖片 取消顯示瀏覽器默認(rèn)圖片  
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無法顯示本地圖片,但是可以通過濾鏡來實(shí)現(xiàn)  
                    img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + reallocalpath + "")";  
                    // 設(shè)置img的src為base64編碼的透明圖片 取消顯示瀏覽器默認(rèn)圖片  
                    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輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 瀏覽器廠商不同,實(shí)現(xiàn)某種特定功能需要進(jìn)行兼容處理,如圖片預(yù)覽,主流瀏覽器支持html5 FileReader,但是...
    Veb閱讀 789評論 1 7
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,826評論 1 45
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,167評論 1 92
  • 序章 談?wù)劇盀g覽器兼容性”的問題?很多前端的面試或筆試中,都有比較籠統(tǒng)的“說說你所知道的各瀏覽器存在的兼容問題”,...
    麻辣小隔壁閱讀 3,173評論 1 57
  • 文|釋言午 1.任憑弱水三千,我只取一瓢飲。 2.滿紙荒唐言,一把辛酸淚!都云作者癡,誰解其中味? 3.試看春殘花...
    梔十八閱讀 1,544評論 5 3

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