gpt4 book ai didi

javascript - onblur - 如何判断点击了什么;或者如何判断 onclick 事件是否正在等待运行

转载 作者:行者123 更新时间:2023-11-30 17:09:31 25 4
gpt4 key购买 nike

在下面的代码中,有没有办法将 blurredByClickOnLink 设置为正确的值(不使用鼠标悬停或其他指针事件在点击发生之前设置某些内容)?如果用户通过单击链接使文本框变模糊,则它应该为 true,如果用户通过 tab 键或单击其他任何地方使文本框变模糊,则它应该为 false。感谢您的关注!

<html>
<body>
<input id="myInput" type="text" onblur="var blurredByClickOnLink='???'; console.log('input onblur. blurred by click on link = ' + blurredByClickOnLink);" />
<br/><br/>
<a id="myLink" href="javascript:console.log('a href');void(0);" onclick="console.log('a onclick');">Link</a>
</body>
</html>

最佳答案

当 DOM 上发生事件时,该事件本质上是“原子的”。这意味着事件将从事件队列中处理,然后才会处理下一个事件。这些事件没有以任何方式“组合”在一起。

当您的输入元素失去焦点时,将在其上触发 blur 事件。那时,您现在可以提出有关 blur 的问题。但是,环境的其余部分不会有任何其他状态变化。接下来发生的可能是单击 link 元素,这也可能会触发事件。在这种情况下,链接上的单击事件。由于这些一个接一个地发生......首先是输入模糊,然后......后来......点击链接,你无法知道模糊何时发生,接下来发生的事情将是点击在链接上,因为它还没有发生。

一个可能的解决方案是在输入模糊时设置一个短计时器。这个计时器可以触发另一个函数(比如 100 毫秒),然后问这个问题……链接被点击了吗?

这可能足以解决您的难题。

它帮助我思考此类问题的方法是可视化浏览器逐一处理以更改 DOM 状态的请求队列(收件箱)。问问自己“当我处理一个请求时,我是否有做出决定所需的信息?”

关于javascript - onblur - 如何判断点击了什么;或者如何判断 onclick 事件是否正在等待运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com