javascript - swal().then(function ()) 未在 Internet Explorer 11 中触发

标签 javascript internet-explorer sweetalert2

希望你能帮我解决这个问题,我想我遗漏了一件小事。

我的 _layout.cshtml 包含所有相关脚本,让爱人在 IE 上工作:

(这在以前的版本中是有效的,尽管我们已经有一段时间不必支持 IE 了)

@if (Request.Browser.Browser == "IE" || Request.Browser.Browser == "InternetExplorer")
{
    <script src="https://npmcdn.com/es6-promise@3.2.1"></script>
}
<script type="text/javascript" src="~/bower_components/sweetalert2/dist/sweetalert2.min.js"></script>

<!--[if IE 9]>
    <script src="~/bower_components/sweetalert2-ie9/dist/sweetalert2.min.js"></script>
<![endif]-->

如您所见,promise 包含在 sweetalert2 之前,我知道这很好,因为我提交的表单上的 sweetalert 函数。

问题是,当我单击"is"时,.then() 函数没有被命中,在调试器中它被忽略并直接跳过。这只与 IE 有关,目前只在 11 中测试过,我现在要检查其他版本。我无法弄清楚为什么会这样,有什么想法吗?

相关.js:

vm.PostCommentData = function (postData, event) {
    var $commentTextBoxId = '#' + vm.createRemedyCommentId;

    if ($($commentTextBoxId).length) {
        var globalTranslations = globalDashboard.GetTranslations();

        swal({
            title: translations.AreYouSureYouWantToSubmit,
            text: '',
            type: 'warning',
            showCancelButton: true,
            confirmButtonText: '<i class="fas fa-thumbs-up"></i> ' + globalTranslations.Yes,
            cancelButtonText: '<i class="fas fa-thumbs-down"></i> ' + globalTranslations.No,
            confirmButtonClass: 'btn btn-success',
            cancelButtonClass: 'btn btn-danger',
            buttonsStyling: false
        }).then(function () {
            vm.state($(event.currentTarget).data('state'));
            var newComment = $($commentTextBoxId).val();
            var errorMessage = $("<ul class='list-unstyled' />");
            var hasErrored = false;

            if (vm.selectedQuestions().length == 0) {
                errorMessage.append("<li>" + translations.AtLeastAQuestionIsRequiredToBeSelected + "</li>");
                hasErrored = true;
            }

            if (vm.selectedDealershipId() == undefined) {
                errorMessage.append("<li>" + translations.PleaseSelectADealership + "</li>");
                hasErrored = true;
            }

            if (newComment === '') {
                errorMessage.append("<li>" + translations.CommentTextIsRequired + "</li>");
                hasErrored = true;
            }

            if (hasErrored) {
                swal({
                    title: translations.Warning,
                    html: errorMessage,
                    type: 'error',
                    buttonsStyling: false,
                    confirmButtonText: '<i class="fas fa-check"></i> ' + globalTranslations.OK,
                    confirmButtonClass: 'btn btn-success'
                });
            }
            else {

                var successMessage = translations.YourRemedyHasBeenSubmitted;
                if (vm.selectedQuestions().length > 1)
                    successMessage = translations.YourRemediesHaveBeenSubmitted;

                swal({
                    title: translations.Completed,
                    text: vm.globalViewModel().decodeEntities(successMessage),
                    type: 'success',
                    buttonsStyling: false,
                    confirmButtonText: '<i class="fas fa-check"></i> ' + globalTranslations.OK,
                    confirmButtonClass: 'btn btn-success'
                }).then(function () {
                    $(remedyBoxId + " .overlay").show();
                    $('#create-remedy-commentFormId').submit();
                });
            }
        });
    }
}

vm.knockout.js 约束,但我几乎可以完全确定 knockout 不会参与其中。

最佳答案

经过大量摸索,我意识到这需要一个 polyfill 服务。

我的 IE 标签已更新为:

@if (Request.Browser.Browser == "IE" || Request.Browser.Browser == "InternetExplorer")
    {
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>
        <script src="https://npmcdn.com/es6-promise@3.2.1"></script>
    }

非常喜欢 1 行修复!

关于javascript - swal().then(function ()) 未在 Internet Explorer 11 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339989/

相关文章:

javascript - IE 触发除了点击以外的任何东西

html - CSS: 如何在 IE9 中使用 vmin 单元?

javascript - SweetAlert2 蹩脚文本

javascript - 设置overflow-y可见,而overflow-x为auto,以便内容可以垂直溢出父容器

redirect - 稍后使用 location.hash 时,带有片段标识符的 Response.Redirect 会导致意外刷新

javascript - 原型(prototype)编程中的对象和原型(prototype)有什么区别?

javascript - 在 React 模块中测试 SweetAlert2 的 preConfirm Hook

javascript - Vue.js,如何从组件中填充 SweetAlert2 html 表单数据

javascript - 将 div 行绑定(bind)到 observableArray 中的单个项目

javascript - 提交表单并重定向到 PHP 和链接