【问题标题】:Internet Explorer 11 - AJAX Call not firingInternet Explorer 11 - AJAX 调用未触发
【发布时间】:2018-05-05 07:20:17
【问题描述】:

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

我首先解决了一个问题,即 FormData 没有任何 .get() 方法,为此我使用了 NPM formdata-polyfill。

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

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

因此,很明显,没有捕获任何事件,也没有执行任何 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)。

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

感谢收听。

【问题讨论】:

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


    【解决方案1】:

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

    哪个在 IE 上得到更好的支持。

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

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

    在完全支持 IE 11 方面仍有一些问题,但这个问题已修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多