当外部元素具有焦点时,onclick 不会在 TD 上触发

onclick not firing on td when outside element has focus

提问人:spraff 提问时间:11/11/2023 更新时间:11/11/2023 访问量:19

问:

我有一个在 onchange、onkeydown 等触发时在 Javascript 中执行搜索。这将生成一个结果,该结果显示在 using .这行得通。<input><table><input>position: absolute

该表包含可单击的单元格

let td = document.createElement ("td");
tr.appendChild (td);
td.appendChild (document.createTextNode (search_result.label));
td.onclick = create_click_handler (search_result);

问题是,如果有焦点,那么只有在第二次点击时才会触发。因此,如果我执行以下一系列操作:<input>onclick

  • 键入搜索文本(生成结果)
  • 单击“A”(无事)<td>
  • 单击以重新获得焦点(没有任何反应)<input>
  • 单击“A”(无事)<td>
  • 单击以重新获得焦点(没有任何反应)<input>
  • 单击“A”(无事)<td>
  • 单击以重新获得焦点(没有任何反应)<input>
  • 单击“A”(无事)<td>
  • 单击(现在调用了 onclick 处理程序!<td>

当发生火灾时,它会正常运行。如果我在Firefox的调试器中捕获“事件侦听器断点”,这将确认第一次单击根本不会发生。换句话说,这似乎是因为 DOM 中的某些内容,而不是 Javascript 的问题。td.onclickMouse > clickonclick

在Firefox和Chrome中的行为是一样的,所以我认为根据某种标准,这是“正确”的行为。

如何确保第一次点击此 td 时始终触发事件处理程序?

JavaScript HTML DOM

评论

0赞 matt richards 11/11/2023
您必须发布更多代码,您的描述听起来应该可以正常工作,我在本地运行了一些测试代码并且工作正常
0赞 Adrid 11/11/2023
我能看到你的总代码吗?

答: 暂无答案