我正在使用webpack捆绑东西。它似乎在其他所有浏览器中运行良好,但在IE(没有承诺)中,它给出了它无法找到Promise
的错误。
我使用HtmlWebpackPlugin
来注入所有脚本。因此,我的应用程序的脚本总是注入到最后。但是,在我的应用程序块中,它似乎有这个代码(通过使用cdn url链接在未编辑的文件中搜索来找到它):
/* 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);
}
});
似乎在页面加载时在我的DOM末尾动态插入另一个script
标记。由于我之前的脚本已经通过执行,因此它们会出现无法找到Promise
的错误。在任何其他浏览器中都看不到此行为(即使代码对IE进行了特定检查)。
有没有办法在不引起此行为的情况下使用蓝鸟?我的目标是IE10 +与promises的兼容性(在IE11上测试)。或者我是否必须去另一个承诺图书馆?
我认为我的webpack配置在这里并不重要,但如果需要,请告诉我。