gpt4 book ai didi

javascript - 我如何对源自鼠标点击而不是键盘操作的光标事件采取行动?

转载 作者:可可西里 更新时间:2023-11-01 02:22:06 24 4
gpt4 key购买 nike

我想在用户通过鼠标单击将光标移动到另一个位置时执行某些操作,但在通过键盘操作(箭头、pageup/pagedown、home/end)完成时不执行此操作。

  • 我不能只听 cursorActivity,因为它会在键盘和鼠标操作时触发。
  • 我不确定我是否可以听到 mousedown,因为它可能是不是光标位置更改(例如选择、拖动)的开始。

捕捉那些由鼠标引起的光标移动的最佳方法是什么?

最佳答案

你可以监听这些事件:

  • 鼠标按下
  • 游标事件
  • 按键
  • 改变前

如果满足这些条件,则通过鼠标单击移动光标:

  • cursorActivity 事件在 mousedown 事件之后触发
  • 两个事件之间没有按下移动键
  • 两次事件的内容没有发生变化
  • 没有选择文本

var movedByMouse = false;

var editor = CodeMirror(document.body);

editor.on("mousedown", function () {
movedByMouse = true;
});

editor.on("cursorActivity", function () {
if (movedByMouse) {
movedByMouse = false;
if (!editor.getSelection()) {
console.log("Moved by mouse");
}
}
});

editor.on("keydown", function () {
if (isMovementKey(event.which)) {
movedByMouse = false;
}
});

editor.on("beforeChange", function () {
movedByMouse = false;
});

function isMovementKey(keyCode) {
return 33 <= keyCode && keyCode <= 40;
};
<link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/codemirror.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/codemirror.min.js"></script>

关于javascript - 我如何对源自鼠标点击而不是键盘操作的光标事件采取行动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40282995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com