Просмотр исходного кода

尽量兼容老的浏览器访问

niujiuru 1 день назад
Родитель
Сommit
f21d4d8b78

+ 1 - 0
web-ui.service/web/app.html

@@ -93,6 +93,7 @@
     </main>
   </div>
 </div>
+<script src="static/js/polyfills.js?v={{V}}"></script>
 <script src="static/js/util.js?v={{V}}"></script>
 <script src="static/js/echarts.min.js?v={{V}}"></script>
 <script src="static/js/xterm.js?v={{V}}"></script>

+ 1 - 0
web-ui.service/web/login.html

@@ -38,6 +38,7 @@
 
     <div id="msg"></div>
 </div>
+<script src="static/js/polyfills.js?v={{V}}"></script>
 <script src="static/js/login.js?v={{V}}"></script>
 </body>
 

+ 3 - 24
web-ui.service/web/static/js/polyfills.js

@@ -407,27 +407,6 @@ if (typeof window.EventSource !== "function") {
     window.EventSource = EventSourcePolyfill;
 }
 
-/* ---------------- 文件下载兜底 (IE11 不支持 a[download]) ---------------- */
-
-/**
- * 统一文件下载入口: 现代浏览器走 a[download], IE10/11 走 msSaveBlob
- * @param {Blob} blob
- * @param {string} filename
- */
-
-function downloadBlobFile(blob, filename) {
-    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
-        window.navigator.msSaveOrOpenBlob(blob, filename);
-        return;
-    }
-    var url = URL.createObjectURL(blob);
-    var a = document.createElement("a");
-    a.href = url;
-    a.download = filename || "download";
-    document.body.appendChild(a);
-    a.click();
-    setTimeout(function () {
-        document.body.removeChild(a);
-        URL.revokeObjectURL(url);
-    }, 100);
-}
+/* ---------------- 文件下载 ---------------- */
+/* downloadBlobFile 的唯一定义在 util.js(含 IE msSaveOrOpenBlob 分支)。
+ * 此处不放实现:app.html 中 polyfills.js 先于 util.js 加载,重复声明会被 util.js 静默覆盖,IE 分支会失效。 */

+ 5 - 1
web-ui.service/web/static/js/util.js

@@ -2,11 +2,15 @@
 
 /**
  * 统一文件下载入口。
- * 现代浏览器统一走 a[download] + ObjectURL,下载完立即回收 URL。
+ * IE10/11 走 msSaveOrOpenBlob(不支持 a[download]);现代浏览器走 a[download] + ObjectURL,下载完立即回收 URL。
  * @param {Blob} blob
  * @param {string} filename
  */
 function downloadBlobFile(blob, filename) {
+    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+        window.navigator.msSaveOrOpenBlob(blob, filename);
+        return;
+    }
     var url = URL.createObjectURL(blob);
     var a = document.createElement("a");
     a.href = url;