浏览器中希望下载图片,不希望查看

今天有个需求,需要在浏览器中下载图片,但是每次都是<a>都是打开了。请教了前端,她写了个代码

    //判断浏览器类型
    function myBrowser(){
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isOpera = userAgent.indexOf("Opera") > -1;
        if (isOpera) {
            return "Opera"
        }; //判断是否Opera浏览器
        if (userAgent.indexOf("Firefox") > -1) {
            return "FF";
        } //判断是否Firefox浏览器
        if (userAgent.indexOf("Chrome") > -1){
            return "Chrome";
        }
        if (userAgent.indexOf("Safari") > -1) {
            return "Safari";
        } //判断是否Safari浏览器
        if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
            return "IE";
        }; //判断是否IE浏览器
        if (userAgent.indexOf("Trident") > -1) {
            return "Edge";
        } //判断是否Edge浏览器
    }
    
    //IE浏览器图片保存本地
    function SaveAs5(imgURL)
    {
        var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000");
        for(; oPop.document.readyState != "complete"; )
        {
            if (oPop.document.readyState == "complete")break;
        }
        oPop.document.execCommand("SaveAs");
        oPop.close();
    }
    
    //谷歌,360极速等浏览器下载
    function download(src) {
        var $a = document.createElement('a');
        $a.setAttribute("href", src);
        $a.setAttribute("download", "");
    
        var evObj = document.createEvent('MouseEvents');
        evObj.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
        $a.dispatchEvent(evObj);
    };
    
    //火狐等浏览器下载
    function firefoxSave(src) {
        var imgtype = src.substring(src.lastIndexOf("/")+1,src.length);
        var id = new Date().getTime();
        var a = '<a href="''" download="'+imgtype+'" id="'+id+'" ></a>';
        $('body').append($(a));
        document.getElementById(id).click();
    };
    
    function oDownLoad(url) {
        if (myBrowser()==="IE"||myBrowser()==="Edge"){
            SaveAs5(url);
        }else if(myBrowser()==="FF"){
            firefoxSave(url);
        }else{
            download(url);
        }
    }

然后调用最后的oDownLoad方法就可以实现每个浏览器都是下载的情况。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,544评论 25赞 708
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,985评论 8赞 183
  • 今日地球 https://github.com/shutup/DailyEarth日本的向日葵8号卫星每天都会拍摄...
    SHUTUP阅读 551评论 0赞 1
  • 尚且未到金秋时节 我们却在这里相遇。 “前世五百次的回眸一笑 才换来今生的擦肩而过。” 不到一个月的相处时间 也许...
    Emersoncrofy阅读 651评论 1赞 1
  • 开篇语 是不是有人曾经傻啦吧唧的跑去图书馆,借了一堆的英文原著,看着老厚的那种。然后想着在图书馆看英文原著,不仅装...
    张照博阅读 3,249评论 8赞 12

友情链接更多精彩内容