HTMLElement.focus()在HTMLElement.onpointerdown事件中无效问题咨询
问题原因
document.getElementsByTagName()方法返回的是HTMLCollection类数组对象,而非单个DOM元素。你直接对返回的p集合绑定onpointerdown事件,事件不会绑定到实际的<p>节点上,回调函数自然无法触发。- 即使正确绑定到
<p>节点,pointerdown事件触发时浏览器的默认行为会处理当前点击上下文的焦点状态,会覆盖回调中手动设置的input焦点,导致focus()调用看起来不生效。而click事件是在pointerdown、pointerup全流程结束后才触发,此时浏览器默认焦点处理已经完成,不会覆盖手动设置的焦点,所以绑定click时可以正常生效。
解决方案
修正DOM元素获取逻辑,同时在pointerdown回调中阻止默认行为即可,修改后的jsfile.js代码如下:
let pList = document.getElementsByTagName("p"); let inputList = document.getElementsByTagName("input"); pList[0].onpointerdown = (e) => { // 阻止pointerdown默认行为,避免覆盖手动设置的焦点 e.preventDefault(); inputList[0].focus(); };
内容的提问来源于stack exchange,提问作者fodil yacine
相关产品推荐
相关产品推荐

