作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我将以下事件处理程序绑定(bind)到我的表单
:
form.addEventListener('submit', function(evt) {
evt.preventDefault();
console.log('submitted');
this.submit();
});
当客户端提交表单时,会执行事件处理程序,提交表单时不会再次执行事件处理程序。
但是,当将 click
处理程序附加到 anchor
元素时,相同的逻辑并不适用:
a.addEventListener('click', function(evt) {
evt.preventDefault();
console.log('clicked');
this.click();
});
事件处理程序被执行了两次,链接永远不会被访问。
我有两个问题:
submit
与 click
的工作方式不同?click
处理程序只执行两次,而不是无限期地执行,如果每次调用时都执行事件处理程序?最佳答案
表单提交和元素点击是不同的 Action ,它们的行为方式不一定相同。
使用表单的提交方法时,the standard says :
Submits the form, bypassing interactive constraint validation and without firing a submit event.
这也可以在 the submission algorithm 中看到.第 6 项检查操作是否来自表单的提交方法,如果设置了“submit()”标志,则跳过验证和事件触发。
element.click
设置“click in progress flag”,在创建调用处理程序函数的合成点击事件之前在内部进行检查。这可以防止单击元素导致无限递归单击事件处理程序调用。
关于javascript - 触发表单的提交事件不执行事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72514128/
我计划在网页上安装 Facebook 评论模块/插件,比方说: http://www.example.com/ 是否可以将用户重定向到网站内的另一个登录页面?假设我想在点击发表评论后将它们发送到这里:
我是一名优秀的程序员,十分优秀!