【问题标题】:jQuery Set Mouse Position (not cursor position)jQuery 设置鼠标位置(不是光标位置)
【发布时间】:2009-07-30 19:17:29
【问题描述】:

我有一个链接,当我点击它时,我希望它能够将鼠标的位置向右移动(或视口内的任何位置,就此而言)。

在代码中可能类似于以下内容:

$('a#expand').click(function(e){
    $(document)
       .mouseXPos(e.pageX + 50)
       .mouseYPos(e.pageY + 50);
});

当然,链接可能不是必需的,但类似的“设置鼠标位置”功能正是我所追求的。

我已经看到了将光标位置移动到文本中某个位置的解决方案,但我没有从他们那里收集到太多信息。

【问题讨论】:

  • 这听起来真的会激怒用户!我希望你这样做是有充分理由的,而不是有可能。
  • 我应该进一步解释。我正在为 jQuery 使用 Brian 的出色 hoverIntent 插件,以及一个包含扩展菜单的链接选项卡的菜单。我正在为滑出设置动画,但是如果在菜单动画时鼠标保持不动,则 hoverIntent 会导致悬停关闭。听起来很奇怪,但这个插件捕获了开发人员通常遇到的所有其他经典的 mouseenter/leave 失火。他知道这个问题,并正在为下一个版本解决这个问题。能够以某种方式将鼠标移动一个像素会很棒。客户端或服务器端解决方案都很棒。
  • 虽然这听起来像是会激怒用户的事情,但让我描述一种情况,即移动鼠标会激怒用户,而移动鼠标实际上可能会让用户感到高兴.. . 假设你点击了网页上的某个东西,页面上的元素重新排列;如果鼠标没有移动,则您不再位于您单击的元素上方;鼠标没有相对于页面移动,但它已经相对于内容移动。为了提供鼠标没有移动的体验,可能需要相对于页面“移动”鼠标。

标签: jquery mouse mouse-position


【解决方案1】:

没有通过 JavaScript 移动鼠标的机制。

【讨论】:

  • ASP.Net、AJAX、jQuery、C# 的任何机制?我知道鼠标位置可以通过 jQuery 读取,也许有办法通过 DOM 公开它?
  • @Michael:不,鼠标位置对于 JavaScript 是只读的。 AJAX 只是在客户端上执行的 JavaScript 通过 HTTP 与服务器应用程序通信的通信方法。 ASP.NET/C# 是服务器端,它的范围仅限于它执行的服务器。控制客户端鼠标的唯一方法是使用在用户空间中运行的客户端应用程序,这意味着让他们下载和安装一些东西。
  • 虽然这是一个相当晚的回应,但感谢 CptSkippy。我赞成并标记为您对我的问题的评论的答案。
  • 如果您有时间,我会认为这有点矫枉过正,但 Silverlight 能否执行该操作,因为 XAP 和应用程序位于客户端上?
  • @Michael:不,Silverlight 无法运行非托管代码,控制鼠标的唯一方法是通过 User32.dll。如果 Silverlight 应用程序超出浏览器,它可以调用 COM,它可以环绕 user32.dll,但我认为这根本不是您的想法。
【解决方案2】:

我可能错了,但我认为无法从客户端脚本中移动鼠标指针。考虑到滥用的可能性,我当然希望不会。

【讨论】:

  • 我肯定想过这个问题。如果我遇到这样的力量,我一定会找到解决办法并告诉你。您知道执行此操作的服务器端脚本吗?谢谢。
  • @Michael:服务器端脚本更不可能移动客户端的鼠标指针。 可能可以通过 ActiveX 控件(仅限 Internet Explorer)、自定义插件、.NET 控件或可能通过签名的 Java 小程序来移动鼠标指针。
【解决方案3】:

无法通过 JavaScript 或任何客户端脚本完成鼠标位置更改。 这样做的唯一原因是不让客户端脚本有可能被滥用,如前所述。

【讨论】:

    【解决方案4】:

    您可以隐藏光标,并在不同的位置显示另一个。

    例如,在迷宫中四处走动时非常适合。光标看起来像是停止了,但是当您移出窗口时会再次看到它。

    【讨论】:

    • 我可以知道如何实现它吗?
    • @heyanshukla 要隐藏a cursor,如果您有一些空图标文件,可以使用document.body.style.cursor = url('empty.ico');。或者您可以设置document.body.style.cursor = 'none';,但这仅适用于 Firefox。当然不能自定义鼠标坐标,只能隐藏光标。
    【解决方案5】:

    正如其他用户已经提到的那样,Javascript 没有任何机制可以做到这一点。但是,您可以禁用鼠标并实现光标来执行您需要的操作。这是一个解释如何的链接。 How to implement a custom cursor

    【讨论】:

      【解决方案6】:

      您映射更改滚动位置,这将自动将您的指针移动到所需位置;

      $(document).scrollTop();
      

      在某些情况下,我需要将指针停留在同一个复选框上,尽管按钮显示/隐藏导致冒泡......所以我做了类似的事情;

      $(document).scrollTop( $(document).scrollTop() + parseInt($('.btn-show-selected-group').outerHeight()) );
      $(document).scrollTop( $(document).scrollTop() - parseInt($('.btn-show-selected-group').outerHeight()) );
      

      【讨论】:

        猜你喜欢
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多