我陷入了一个错误的中间。我开始使用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)。
如果您有任何想法,请告诉我们!
感谢收听。
答案 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的一些问题,但这个问题已修复。