在compositionend事件中调用preventDefault方法没有效果

问题描述 投票:0回答:1

var tempNode = document.getElementById('view_1');
tempCNode.addEventListener('compositionend', function(e) {
  console.log(e.cancelable); // true
  e.preventDefault();
});
<div id="view_1" class="view" contenteditable="true">
  <p>
    <br>
  </p>
</div>

我想获取输入法的值,不让它直接显示在

div
中。

我该怎么办?

谢谢

javascript html dom-events contenteditable
1个回答
0
投票

我最近遇到了这个问题。这是我的理解:

在 JavaScript 的 'compositionend' 事件中使用 'e.preventDefault() ' 在技术上是可行的,但可能不会达到您期望的效果。根据Stack Overflow讨论,在compositionend事件中调用preventDefault没有任何效果。这可能是因为合成结束事件表示合成会话的结束,并且此时阻止默认操作可能没有意义,因为输入合成已经完成。 如果您尝试控制或修改文本输入的行为,则可能需要使用其他事件,例如“input”、“keydown”或“compositionstart”。但是,具体方法取决于您想要实现的目标。

© www.soinside.com 2019 - 2024. All rights reserved.