我正在开发一个小型图书馆,其中我有一个输入,当聚焦时,通过点击/点击特定的div(通过在mousedown事件上返回false)可以模糊。其他元素很好(正常行为)。提到的div在实际实现中包含一些向输入字段添加文本的按钮。该工作并不需要重点,但我也希望在那里接受键盘输入,所以我希望它按照我解释的方式工作。
我注意到移动设备上有些奇怪的行为。 当长时间(点击并按住几百毫秒)不可点击的div同时聚焦于输入时,mousedown事件不会发生并且模糊事件会神奇地触发。我注意到另一个事件也没有发生,所以它不仅仅是mousedown事件。
示例:
<input id="input" type="text" />
<div id="disabledArea" class="flex-center">
Blur disabled when clicking here.
</div>
使用以下JavaScript:
var input = document.getElementById('input');
var disabledArea = document.getElementById('disabledArea');
input.addEventListener('blur', () => {
console.log("blur");
});
disabledArea.addEventListener('mousedown', (e) => {
console.log("mousedown");
e.preventDefault();
return false;
});
https://jsfiddle.net/pgukmmjo/
有人可以帮我这个吗?它很难解释,但一旦你理解了这个问题就很明显。
我建议在Chrome浏览器中查看示例JSFiddle,并打开(CTRL
+ SHIFT
+ I
)和设备工具栏(CTRL
+ {{1} } + SHIFT
)模拟移动触摸。或者,您可以使用警报更改控制台日志,并在移动设备上查看。