美文网首页
js图片上传预览兼容写法

js图片上传预览兼容写法

作者: Veb | 来源:发表于2018-06-29 20:26 被阅读0次

浏览器厂商不同,实现某种特定功能需要进行兼容处理,如图片预览,主流浏览器支持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数据

    f.onload=function(){//读取完毕将结果赋值对象img src

        img.src=this.result;

    }

}
</script>

IE处理方式

比较欣慰的是IE中file表单可以获取选中图片的绝对路径,不要急,有绝对路径了,确不能直接赋值给img,因为除了IE6之外,由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现:

非IE6

myfile.select();
myfile.blur();
var reallocalpath = document.selection.createRange().text;
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + reallocalpath + "")";  
// 设置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浏览器设置img的src为本地路径可以直接显示图片  
                if (isIE6) {  
                    img.src = reallocalpath;  
                }else {  
                    // 非IE6版本的IE由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现  
                    img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + reallocalpath + "")";  
                    // 设置img的src为base64编码的透明图片 取消显示浏览器默认图片  
                    img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';  
                }  
            }   
        }
    }
</script>
</html>

加油!

相关文章

  • js图片上传预览兼容写法

    index js图片上传预览兼容写法 __veblen 浏览器厂商不同,实现某种特定功能需要进行兼容处理,如图片预...

  • js图片上传预览兼容写法

    浏览器厂商不同,实现某种特定功能需要进行兼容处理,如图片预览,主流浏览器支持html5 FileReader,但是...

  • js图片上传预览

    项目中碰到一个需求,上传图片及时给用户预览。开始的想法就是上传的图片先传递到后台,在通过ajax获取图片路径显示到...

  • JS图片上传预览

    划水摸鱼的时候研究了JS图片的上传预览,分别是FileReader()、createObjectURL(),在此分...

  • Laravel 中 bootstrap fileinput 图

    1、 图片上传并预览 效果展示: 2 图片上传成功之后的预览 图片上传之后编辑预览效果展示: 3 图片预...

  • JS 上传图片实时预览

    html 代码 表单form 不要忘了加enctype="multipart/form-data" js 代码

  • JS图片上传预览(一)

    URL.createObjectURL()静态方法会创建一个 DOMString。其中包含一个表示参数中给出的对象...

  • js上传图片实时预览

  • js图片压缩预览

    图片压缩预览(具体上传请看另外一篇文章,讲解的更详细图片压缩上传) html结构 js代码 css代码 欢迎访问我...

  • 图片上传前预览需求

    图片上传前预览需求 很多业务场景下,我们需要在用户上传图片前,先预览待上传的图片

网友评论

      本文标题:js图片上传预览兼容写法

      本文链接:https://www.haomeiwen.com/subject/mzczyftx.html