当事件只读取消设置时没有数据列表弹出

No datalist popup when readonly unset by event

我的输入文本元素绑定到数据列表元素并设置为只读。当点击输入元素时,它的只读 属性 被取消设置。但是输入文本时数据列表弹出框没有显示。

但是当您取消对输入元素的聚焦并重新聚焦时,确实会出现。

window.onload = init;
  
function init() {
  var e = document.getElementById('myText');
  e.addEventListener('click', function() { this.readOnly = false; });   
}
<html>
  <body>
    <input type='text' id='myText' list='myList' readonly>
    <datalist id='myList'>
      <option>
        Test1
      </option>
    </datalist>
  </body>
</html>

我正在使用 Firefox 66.0.1。

/edit:这可能是 Firefox 的安全行为与不受信任的事件?有人可以证实这一点吗?

我通过将事件从 click 更改为 mousedown 来修复它。

e.addEventListener('mousedown', function() { this.readOnly = false; });         

我对此的解释是,datalist 元素在焦点事件触发时检查输入元素的只读属性,然后决定是否绘制。焦点事件由 mousedown 事件发生。但是 click 事件发生在 mousedown 事件之后。因此,在数据列表检查只读属性后,只读属性发生了变化。