var exten = "";//下载文件后缀名 var timerLoadExportBtn = null; $(document).delegate("#select", "change", function () { debugger setTimeout("LoadExportApiWordBtn()", 300);//加载导出按钮 console.log("dom export ok"); }); $(document).ready(function () { InitLoad();//初始化导出 //loading设置 $.busyLoadSetup({ animation: "slide", background: "rgba(255, 152, 0, 0.86)" }); }); //初始化 function InitLoad() { setTimeout("LoadExportApiWordBtn()", 300);//加载导出按钮 } //加载自定义导出按钮 function LoadExportApiWordBtn() { $(".information-container").height(240);//文档介绍区域高度 $(".topbar").height(35); var btnExport = "
"; //information-container这个元素是swagger后期动态渲染出来的,所有这里要加个循环判断。 //第一次进来如果有这个class直接加载按钮退出 if ($("*").hasClass("information-container")) { $(".information-container").append(btnExport); return; } //没有元素等待元素出现在加载按钮 timerLoadExportBtn = setInterval(function () { if ($("*").hasClass("information-container")) { $(".information-container").append(btnExport); console.log("load ok"); window.clearInterval(timerLoadExportBtn); return; } console.log("loading"); }, 788); } /** * 延迟函数 * @param {any} delay */ function sleep(delay) { var start = (new Date()).getTime(); while ((new Date()).getTime() - start < delay) { continue; } } /* * 导出 */ function ExportApiWord(type) { switch (type) { case 1: exten = ".docx"; break; case 2: exten = ".pdf"; break; case 3: exten = ".html"; break; case 4: exten = ".xml"; break; case 5: exten = ".svg"; break; } var version = $("#select option:selected").val(); version = version.split('/')[2]; var url = '/api/Swagger/ExportWord?type=' + exten + "&version=" + version; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以使用POST方式,根据接口 xhr.responseType = "blob"; // 返回类型blob // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑 xhr.onload = function () { // 请求完成 if (this.status === 200) { // 返回200 var blob = this.response; var reader = new FileReader(); reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href reader.onload = function(e) { // 转换完成,创建一个a标签用于下载 var a = document.createElement('a'); a.download = 'WIDESEAWCS API文档 ' + version + exten; a.href = e.target.result; $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); } } else { alert(this.status+this.statusText); } //关闭load $.busyLoadFull('hide', { animation: "fade" }); }; // 发送ajax请求 xhr.send(); //打开loader遮罩 $.busyLoadFull('show', { text: "LOADING ...", animation: "fade" }); }