1

我正在使用 webpack 来捆绑东西。它似乎在所有其他浏览器中都运行良好,但在 IE(没有承诺)中,它给出了无法找到的错误Promise

HtmlWebpackPlugin用来注入所有脚本。因此,我的应用程序的脚本总是在最后注入。但是,在我的应用程序块中,它似乎有这个代码(通过使用 cdn url 链接在 unminified-files 中搜索找到这个):

/* WEBPACK VAR INJECTION */(function($, Promise) {(function() {

var getFormFieldsFor, handleFileSelect, uploadFile, uniqid, OnComplete;
var displayUploadProgress, setCaptionText, initProgressBar, resetProgressBar;

var handleAlbumUpload, handleVideoUpload, handleAudioUpload;

/** IE doesn't support Promises in ES5', bluebird alternative script can handle it */
$(document).ready(function () {
    if (navigator.appName == 'Microsoft Internet Explorer' ||  !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv 11/)) || (typeof $.browser !== "undefined" && $.browser.msie == 1)) {
        var script=document.createElement('script');
        script.type='text/javascript';
        script.src='https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.5/bluebird.min.js';
        $("body").append(script);
    }
});

它似乎script在页面加载时在我的 DOM 末尾动态插入另一个标签。由于我之前的脚本已经通过执行,它们给出了Promise无法找到的错误。这种行为在任何其他浏览器中都看不到(即使代码对 IE 进行了特定检查)。

有没有办法在不引起这种行为的情况下使用蓝鸟?我的目标是 IE10+ 与 Promise 的兼容性(在 IE11 上测试)。还是我必须去另一个承诺库?

我认为我的 webpack 配置在这里不会有太大的相关性,但如果需要,请告诉我。

4

0 回答 0