Internet Explorer 11 - AJAX调用未触发

时间:2017-11-21 17:59:04

标签: javascript internet-explorer xmlhttprequest internet-explorer-11

我陷入了一个错误的中间。我开始使用BrowserStack来验证我当前针对Windows IE和EDGE的项目,我在IE 11中遇到了一个特殊问题。

我首先遇到的问题是我解决了FormData没有任何.get()方法的问题,而且我使用了NPM formdata-polyfill。

我正在使用FormData和XMLHTTPRequest处理本机JS登录表单,似乎AJAX调用根本没有触发。

单击提交按钮时,POST请求不会发送到我的特定登录URL,而是触发当前页面本身。

因此,很明显,没有事件被捕获,也没有执行JavaScript。

我的JavaScript是使用WebPack编译的,我用来获取登录表单并附加适当事件的行如下:

    var formLogin = document.querySelector( "#form-login" );

    if ( formLogin !== null )
    {
        var email    = document.getElementById( "email" );

        formLogin.addEventListener( "submit", _.validateLoginForm );
        _.formInstance.init( formLogin );

        _.inputUtil.disableField( '#btn-submit-email' );
        _.inputUtil.disableField( '#btn-submit-password' );

        utils.addAndDispatchEvent( '#email', 'input', _.inputUtil.disableSubmitIfFieldIsEmpty( '#btn-submit-email' ) );
        utils.addAndDispatchEvent( '#password', 'input', _.inputUtil.disableSubmitIfFieldIsEmpty( '#btn-submit-password') );

        email.addEventListener( "invalid", _.onInvalidEmail );
    }

```

JS文件已正确加载到。

我不知道它可以来自哪里,因为它适用于任何其他浏览器(包括我获得polyfill后的Edge)。

如果您有任何想法,请告诉我们!

感谢收听。

1 个答案:

答案 0 :(得分:0)

我的问题是,我需要覆盖对不同e.preventDefault()的调用 通过 e.preventDefault ? e.preventDefault() : ( e.returnValue = false );

IE上支持的更好。

从以下帖子获得此信息:event.preventDefault() function not working in IE

然后我得到了不正确支持Event和CustomEvent类的aditionnal问题所以我添加了一些polyfill,添加Babel Transpiler以避免使用ES2015但兼容JS。

仍然存在完全支持IE 11的一些问题,但这个问题已修复。