zoukankan      html  css  js  c++  java
  • 万恶之源的IE浏览器下载pdf的兼容

    1、IE浏览器下载文件

      location = '文件路径'   // 简单粗暴好用的下载方式(如果是pdf文件以及有pdf插件,会直接预览,如果不想预览可以参照下面的方法)

    2、文件流下载(IE10, IE11)

      先是浏览器的判断

      (window.ActiveXObject || "ActiveXObject" in window)   true 为IE浏览器,false 为非IE浏览器

      document.documentMode 这个方法很好用,专门判断IE浏览器的版本 返回值类型为数字 8 9 10 11等

    var url = res;
    var xhr = new XMLHttpRequest();
    xhr.open('get', url, true); 
    xhr.responseType = "blob"; // 返回类型blob
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function() {
      // 请求完成
      if(this.status === 200) {
        // 返回200
        var blob = this.response;
        window.navigator.msSaveBlob(blob, '文件.pdf'); // 可自定义文件名
       }
    }
    // 发送ajax请求
    xhr.send();

    3、PDF.js(我只找到了最新的版本,只能在IE11上使用,如果有低版本IE都可用的请转我一份,谢谢)

    4、如果业务需要pdf预览,除了PDF.js外还可以通过判断用户是否下载Adobe Reader PDF,直接用这个插件预览(IE自身是没有带pdf预览插件的,很坑)

      

    // 判断是否有PDF阅读器(true为有pdf预览插件,false表示没有) 如果有pdf插件,可以直接使用location = '文件路径' 会自动预览
    function isAcrobatPluginInstall () {
      //下面代码都是处理IE浏览器的情况 
      if ((window.ActiveXObject) || (navigator.userAgent.indexOf("Trident") > -1)) {
        for(x = 2; x < 10; x++) {
          try {
           oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");
           if(oAcro) {
             return true;
           }
          } catch(e) {}
        }
        try {
          oAcro4 = new ActiveXObject('PDF.PdfCtrl.1');
          if(oAcro4)
            return true;
        } catch(e) {}
        try {
          oAcro7 = new ActiveXObject('AcroPDF.PDF.1');
          if(oAcro7)
            return true;
        } catch(e) {}
      }else{
        //chrome和FF、safrai等其他浏览器
        return true;
      }
    };
  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/wangjishu/p/13182415.html
Copyright © 2011-2022 走看看