Встроенный JavaScript не загружается в IE11 - PullRequest
0 голосов
/ 27 июня 2018

Я работаю на порталах Microsoft Dynamics 365 CRM, но, несмотря на это, я пытаюсь включить модальный Sweet Alert 2 при нажатии кнопки.

Работает в большинстве браузеров (Chrome, Firefox & Edge) , но в Internet Explorer 11.

Это весь код, который я пытаюсь развернуть:

<a href="#" id="searchHelp">
    <img border="0" src="http://some.url" alt="?" width="15" height="15">
</a>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<script lang="javascript">
console.log("Javascript loaded");
var helpButton = document.querySelector('#searchHelp');

if(navigator.userAgent.indexOf(".NET") >= 0) {
    console.log('Triggered IE Modal actions');
    helpButton.attachEvent('onclick', function(e) {
        e.returnValue = false;
        loadModal();
    });
} else {
    console.log('Triggered non-IE Modal actions');
    helpButton.addEventListener('click', (e) => {
        e.preventDefault();
        loadModal();
    }, false)
}

function loadModal() {
    var xhr = new XMLHttpRequest();

    xhr.open( "GET", "http://some.url/to-load", false); 

    xhr.setRequestHeader("Accept", "text/html");
    xhr.setRequestHeader("Content-Type", "text/html; charset=utf-8");

    xhr.onreadystatechange = function() {
        if(this.readyState == 4) {
            xhr.onreadystatechange = null;
            if(this.status == 200) {
                var parser = new DOMParser(),
                    content = parser.parseFromString(this.response, "text/html"),
                    form = content.querySelector('#liquid_form');

                swal({
                    icon: "info",
                    content: form,
                    button: {
                        text: "Close",
                        value: false,
                        visible: true,
                        className: "",
                        closeModal: true,
                    }
                })
            }
        }
    };
    xhr.send();
}
</script>
<style>
    .swal-modal {
        width: 90% !important;
    }
    .swal-content {
        overflow: hidden;
    }
</style>

Модал прекрасно работает во всех браузерах, о которых я упоминал ранее, но при нажатии на кнопку никаких действий не происходит. Он переходит в верхнюю часть страницы, и к URL-адресу добавляется хэштег. Сообщение «Javascript загружен» также не отображается.

Я пытался повысить совместимость браузера: я изменил fetch() на XMLHttpRequest и добавил проверку браузера путем тестирования на консоли инструментов разработчика, добавил attachEvent() и addEventListener(). Я также попытался включить type="javascript" в тег. Любые подсказки?

1 Ответ

0 голосов
/ 28 июня 2018

IE11 не поддерживает => функции стрелок, их использование по условию не будет работать, даже если выполнение не достигнет их в вашем текущем коде, в целом JavaScript не может быть обработан не совместимым с ES6 браузер, как IE.

Переключиться на традиционный синтаксис function(e) { ... }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...