Dart:在 IE11 中提交表单时,preventDefault() 在异步回调中不起作用
Dart: preventDefault() not working in asynchronous callback when submitting form in IE11
我在 IE11 中提交表单时遇到 Event.preventDefault()
问题。出于某种原因,它不会阻止浏览器在使用 async
回调时刷新。
HTML:
<form id="login">
<input type="email" id="email" placeholder="Email">
<input type="password" id="password" placeholder="Password">
<input type="submit" value="SUBMIT">
</form>
飞镖:
void main() {
FormElement form = querySelector('form#login');
form.onSubmit.listen((Event e) async {
e.preventDefault();
// send login request
});
}
但是,如果我删除 async
关键字,它 会 阻止浏览器刷新。我在这里错过了什么吗,我没想到它会这样?在 Chrome 中,它在有和没有 async
的情况下都有效。
这看起来像是一个错误。请在这里 https://github.com/dart-lang/sdk/issues/new 提交,我们会查看。
我在 GitHub 的 dart-lang/sdk 存储库上创建了一个 issue,似乎 IE11 只是执行异步回调有点晚了 e.preventDefault()
才能生效.所以我把表单提交的所有回调都改成同步的,这样就马上执行了。
在某些情况下,到处都是 .then()
看起来相当混乱,所以我改为在内部定义一个异步函数,以便我可以使用 await
.
飞镖:
void main() {
FormElement form = querySelector('form#login');
form.onSubmit.listen((Event e) {
e.preventDefault();
_asyncWrap() async {
// send login request
}
_asyncWrap();
});
}
我在 IE11 中提交表单时遇到 Event.preventDefault()
问题。出于某种原因,它不会阻止浏览器在使用 async
回调时刷新。
HTML:
<form id="login">
<input type="email" id="email" placeholder="Email">
<input type="password" id="password" placeholder="Password">
<input type="submit" value="SUBMIT">
</form>
飞镖:
void main() {
FormElement form = querySelector('form#login');
form.onSubmit.listen((Event e) async {
e.preventDefault();
// send login request
});
}
但是,如果我删除 async
关键字,它 会 阻止浏览器刷新。我在这里错过了什么吗,我没想到它会这样?在 Chrome 中,它在有和没有 async
的情况下都有效。
这看起来像是一个错误。请在这里 https://github.com/dart-lang/sdk/issues/new 提交,我们会查看。
我在 GitHub 的 dart-lang/sdk 存储库上创建了一个 issue,似乎 IE11 只是执行异步回调有点晚了 e.preventDefault()
才能生效.所以我把表单提交的所有回调都改成同步的,这样就马上执行了。
在某些情况下,到处都是 .then()
看起来相当混乱,所以我改为在内部定义一个异步函数,以便我可以使用 await
.
飞镖:
void main() {
FormElement form = querySelector('form#login');
form.onSubmit.listen((Event e) {
e.preventDefault();
_asyncWrap() async {
// send login request
}
_asyncWrap();
});
}