gpt4 book ai didi

javascript - 在光标不移动时更改光标

转载 作者:行者123 更新时间:2023-11-30 15:28:58 25 4
gpt4 key购买 nike

所以我有一个 web 应用程序(在 html、css 和 javascript、jquery 中)可以拖动一个元素(意思是,光标不会移动到该元素上,因为该元素随光标一起移动)。我希望将光标更改为“移动”光标,但我遇到了这种奇怪的行为。我写了这段代码来演示:

<html>
<head></head>
<body oncontextmenu="return false;">
<script>
var b=document.getElementsByTagName('body')[0];
b.onmousedown=function(event){
if(event.button){
b.style.cursor='move';
}
}
b.onmouseup=function(event){
if(event.button){
b.style.cursor='initial';
}
}
</script>
</body>
</html>

基本上,我希望光标更改为“cursor:move;”每当用户按住鼠标右键时;但是,会发生以下情况:

  • 初始:光标:默认
  • 鼠标按下:光标:默认
  • 鼠标移动:光标:默认
  • 鼠标向上:光标:移动
  • 鼠标移动:光标:默认

所以现在我的问题是:为什么会发生这种情况,什么是解决它的好方法?

PS:在 chrome 中测试,这是我需要它在其中工作的主要浏览器

最佳答案

您可以附加 mousedownmouseup 事件来启动将更改和恢复光标的功能。

在每个函数中,您可以确认刚刚按下(或释放)的按钮是鼠标右键。

工作示例:

var div = document.getElementsByTagName('div')[0];

function changeCursorToMove(event) {
if ((event.which === 3) || (event.button === 2)) {
div.classList.add('move-cursor');
}
}

function changeCursorToDefault(event) {
if ((event.which === 3) || (event.button === 2)) {
div.classList.remove('move-cursor');
}
}

div.addEventListener('mousedown', changeCursorToMove, false);
div.addEventListener('mouseup', changeCursorToDefault, false);

document.oncontextmenu = function(){return false;}
div {
width: 100px;
height: 100px;
background-color: red;
}

.move-cursor {
cursor: move;
}
<div></div>

关于javascript - 在光标不移动时更改光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42529448/

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