将鼠标指针移动到特定位置?

IT技术 javascript mouse
2021-01-26 08:00:03

我正在构建一个 HTML5 游戏,我试图将鼠标光标放在特定事件的某个控件上,以便在特定方向上移动始终具有相同的结果。这可能吗?

6个回答

您不能使用 javascript 移动鼠标指针。

如果可以,请考虑一下其含义;)

  1. 用户认为:“嘿,我想点击这个链接”
  2. Javascript 将鼠标光标移动到另一个链接
  3. 用户点击了错误的链接,无意中下载了格式化他的 C 驱动器并吃掉他的糖果的恶意软件
@dionyziz:强制下载到沙箱中,然后通过用户交互启动用户空间下载之间存在很大差异。安全隐患实际上非常大。
2021-03-22 08:00:03
嘿,我讨厌为控制我的鼠标光标而战:支持你的广告,我说回来!
2021-03-23 08:00:03
我认为对话框应该询问用户是否允许鼠标捕获。如果用户说“不”,这一切都不会发生
2021-03-31 08:00:03
网页可以强制下载而无需任何人单击链接,因此您声称的并不是真正的安全问题。但是,无法移动到网页窗口之外。
2021-04-03 08:00:03
想想看,这太棒了:P
2021-04-09 08:00:03
  1. 在客户端机器上运行一个小型 Web 服务器。可以是 100kb 的小东西。Python / Perl 脚本等。
  2. 包括一个可以移动鼠标的小型预编译 C可执行文件。
  3. 通过简单的 http 调用、AJAX 等将其作为 CGI 脚本运行 - 使用您想要将鼠标移动到的坐标,例如:

    http://localhost:9876/cgi/mousemover?x=200&y=450

PS:对于任何问题,对于为什么,以及如何——不能,也不应该——有成百上千的借口。但在这个无限的宇宙中,这真的只是一个决心的问题——至于你是否会让它发生。

网络服务器?也许你的意思是一个带有 http 接口的程序......不需要网络。Go 编程语言可能比 C 有优势,因为它可以轻松添加 http 部分,或者 nodejs 解释器将运行也可以很容易地包含 http 接口的代码,因为 nodejs 解释器的构建使其易于编写服务器应用程序。
2021-03-26 08:00:03
C = 0 依赖项。网络是http。没有可爱的主页,在这里.. 只是交通工具。
2021-03-27 08:00:03
你们中有人注意到Javascript问题下方的标签吗?
2021-03-31 08:00:03
我想我们都在船上,直到“c 可执行文件”... xD
2021-04-04 08:00:03
+1 为 PS。我们可以使用 node dev-server 或任何类似的npmjs.com/package/http-server来执行 CGI 调用吗??
2021-04-05 08:00:03

我想如果您不使用真正的(系统)鼠标光标,您可以完成将鼠标光标放置到屏幕的给定区域。

例如,您可以创建一个图像来代替您的光标,处理一个事件,在检测到鼠标进入您的场景时,将系统光标上的样式设置为“无”(sceneElement.style.cursor = 'none'),然后会显示一个隐藏的图像元素基于预定义的轴/边界框平移,作为光标位于您喜欢的场景中的任何位置。

这样,无论您如何移动实际光标,您的翻译方法都会将图像光标保留在您需要的任何位置。

编辑:jsFiddle 中使用图像表示和强制鼠标移动的示例

是的你可以。您只需将给定元素上的光标样式设置为“无”。试一试。
2021-03-12 08:00:03
这是这个问题的完美解决方案。有人抱怨的唯一原因是因为这不是一个微不足道的解决方案。伙计们,您有时必须进行一些编程!
2021-03-17 08:00:03
玩弄这个想法并在 JSFiddle jsfiddle.net/jaakkytt/9uczV 中做了一个例子
2021-03-21 08:00:03
这仍然存在无法将鼠标“继续移动”到左侧的问题。一旦鼠标离开网页,您就无法继续控制它。
2021-03-26 08:00:03
这是最深思熟虑的答案。并且实际上提供了一个真正的解决方案,而其他一些答案确实增加了任何value:)但是当我们无法获得任何鼠标锁定时,webgl 将如何带来有趣的游戏,例如 FPS 等,这听起来非常有限...
2021-04-04 08:00:03

很好的问题。这确实是 Javascript 浏览器 API 中缺少的东西。我也在和我的团队一起开发 WebGL 游戏,我们需要这个功能。我在 Firefox 的 bugzilla 上打开了一个问题,以便我们可以开始讨论使用 API 来允许鼠标锁定的可能性。这对所有 HTML5/WebGL 游戏开发人员都有用。

如果您愿意,请过来留下您的反馈意见,并为该问题点赞:

https://bugzilla.mozilla.org/show_bug.cgi?id=630979

谢谢!

如果发生这种情况,我将停止使用浏览器。:-P 说真的,网站只是不需要您在安装应用程序时给予的那种同意。如果我们都是好人,只是采用这种级别的控制来改善用户体验,那么这将是一个很棒的功能。不幸的是,互联网是以混蛋为中心的,这就是为什么有很多我们希望永远不会在浏览器中看到的非常简洁的功能。话虽如此:全屏 API 将“锁定”操作系统的其余部分。
2021-03-14 08:00:03
在应用程序可以进行此类锁定之前,将请求@Someone 同意(类似于现在在流行的 Web 浏览器中请求全屏同意的方式)。此外,用户始终可以通过按 ESC 键来撤销同意。
2021-03-19 08:00:03
@ericssoco 遗憾的是,该链接已损坏。这可能会有所帮助:https : //developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
2021-03-23 08:00:03
它发生了。它非常棒(如果仍然是供应商前缀):mdn.github.io/pointer-lock-demo
2021-03-27 08:00:03
2021-04-07 08:00:03

您可以检测鼠标指针的位置,然后移动网页(与身体位置相对),以便它们悬停在您希望它们单击的位置上。

例如,您可以将此代码粘贴到浏览器控制台的当前页面上(然后刷新)

var upvote_position = $('#answer-12878316').position();
$('body').mousemove(function (event) {
    $(this).css({
        position: 'relative',
        left: (event.pageX - upvote_position.left - 22) + 'px',
        top: (event.pageY - upvote_position.top - 35) + 'px'
    });        
});
如果您可以发布一个代码示例,您的帖子会更有value。另外,我建议您查看常见问题解答:stackoverflow.com/faq
2021-03-17 08:00:03
一旦用户点击,你实际上如何点击正确的元素?
2021-04-01 08:00:03
@momomo 你可以使用 document.getElementByID('thingtoclick').click();
2021-04-10 08:00:03
那真是太棒了!跳出框框思考的方式!我怀疑它真的提供了提问者想要的东西,但尽管它很酷,谁真的在乎?
2021-04-11 08:00:03