`

获取鼠标移动信息

阅读更多

Capturing Mouse Movement

获取鼠标移动信息

To start we need to capture the mouse coordinates. This is done by adding a function to document.onmousemove:

 

第一步:获取鼠标的坐标——加一个用户函数到documentonmousemove,代码:

<script>

document.onmousemove = mouseMove;

function mouseMove(ev){

 ev = ev || window.event;

 var mousePos = mouseCoords(ev);

}

function mouseCoords(ev){

 if(ev.pageX || ev.pageY){

  return {x:ev.pageX, y:ev.pageY};

 }

 return {

  x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,

  y:ev.clientY + document.body.scrollTop  - document.body.clientTop

 };

}

</script>

<!--EndFragment-->

We must first explain the event object. Whenever you move the mouse, click, press a key, etc., an event is fired. 

in Internet Explorer this event is global; it's stored in window.event. In Firefox, and other browsers, this event is 

passed to whatever function is attached to the action. Since we attached the mouseMove function to document.

onmousemove, mouseMove gets passed the event object. 

首先要说明的是evnet对象。不管你moveclickpress鼠标等,都会触发一个event对象的事件。在不同的浏览器中,触发的event对象的情况不同。在IE中该触发的event是全局的,该event被存储在windowevent里。 在firefox或者其他浏览器中,event事件会被相应的action获取。当我们将mouseMove函数赋值于documentonmousemovemouseMove会获取鼠标移动事件。To make ev contain the event object in every browser we OR it with window.event. In Firefox the " || window.event" 

will be ignored since ev already contains the event. In IE ev is null so it will get set to window.event. 

上面的JavaScript语句ev = ev || windowevent ev在所有浏览器都能获取到鼠标移动的event事件。在Firefox"||windowevent"将不起作用,因为ev已经有了赋值。在IEevnullev将设置为windowevent

Since we'll need to obtain the mouse coordinates many times over this article we make a mouseCoords function 

that takes one argument: the event. 

由于在这篇文章中需要多次获取鼠标坐标,所以设计了mouseCoords这个获取鼠标坐标的函数,它只包含了一个参数:event

Again we run into differences between IE and other browsers. Firefox and other browsers use event.pageX and

 event.pageY to represent the mouse position relative to the document. If you have a 500x500 window and your

 mouse is in the middle, pageX and pageY will both be 250. If you then scroll down 500 pixels pageY will now

 by 750.

为了使程序能运行在IEFirefox及其他浏览器下。Firefox即其它浏览器以event.pageXevent.pageY来引用相对于文档document的鼠标位置。如果你有一个500*500的窗口window,而且你的鼠标位置在正中间,那么paegXpageY都将是250,如果将页面往下滚动500px,那么pageY将是750px。(同理向右滚动)

Contrary to this, IE decided to use event.clientX and event.clientY to represent the mouse position relative to the 

window, not the document. In our same example clientX and clientY will both be 250 if you put your mouse at 

the middle of a 500x500 window. If you scroll down on the page, clientY will remain 250 since it is measured 

relative to the window and not where you are on the document. As a result we need to add the scrollLeft and 

scrollTop properties of the document body to our mouse position. Finally, the document in IE isn't actually at 

the 0,0 position. There is a small (usually 2px) border surrounding it. document.body.clientLeft and clientTop

countain the width of this border, so we add those also to our mouse position. 

IEFirefox等不同IEevent.clientXevent.clientY来代表相对于窗口windowd鼠标位置,并不是上面的相对于文档document。当我们有一个500*500的窗口,鼠标在正中间,那么clientXclientY也是250,如果你垂直滚动窗口到任何位置,clientY仍然是250,因为相对ie窗口并没有变化。想得到正确的结果,我们必须加入scrollLeftscrollTop这两个相对于文档鼠标位置的属性。最后,由于IE并没有0,0的文档起始位置,因为通常会设置2px左右的边框border在周围,边框的宽度包含在document.body.clientLeftclientTop这两个属性中,我们再加入这些到鼠标的位置中。

<!--EndFragment-->

0
0
分享到:
评论

相关推荐

    VC++获取鼠标移动信息

    在VC++编程环境中,获取鼠标移动信息是一项基本但至关重要的任务,特别是在开发涉及用户交互的图形界面应用时。本文将详细讲解如何利用VC++来捕捉并处理鼠标的移动事件,以及如何通过这些信息来改变鼠标的状态。 ...

    Windows使用QT获取鼠标的位置坐标和移动趋势(相对位移)

    在Windows操作系统中,使用Qt库开发应用程序时,我们经常需要获取鼠标的相关信息,例如位置坐标和移动趋势。本文将深入探讨如何在Qt环境下实现这一功能,特别关注在X轴上的相对位移以及根据移动速度调整的位移绝对值...

    VB获取鼠标移动速度、距离和坐标点信息.rar

    在VB(Visual Basic)编程中,获取鼠标移动速度、距离和坐标点信息是常见的需求,尤其是在开发需要实时监控鼠标活动的应用程序时。本项目通过创建一个鼠标Hook来实现这一功能,Hook技术允许程序拦截和处理特定类型的...

    获取鼠标移动程序

    "获取鼠标移动程序"的标题表明我们要讨论的是一个LabVIEW程序,它能够捕获并处理鼠标的移动事件。这个程序可能是为了实现对用户交互的精确控制,例如在实验数据可视化、图像处理或自动化测试等场景中。 描述中的...

    获取鼠标位置的颜色值

    此外,为了实现实时获取鼠标位置颜色,程序还需要监听鼠标移动事件。Windows API提供了`SetWindowsHookEx`函数来设置全局鼠标钩子,通过钩子函数`WH_MOUSE_LL`,我们可以捕获到低级别的鼠标消息,从而得知鼠标位置的...

    获取鼠标当前坐标

    获取鼠标在当前屏幕坐标系中的位置信息 将鼠标移动到要获取位置的点,然后按F10,就会弹出当前的坐标值

    鼠标移动获取窗口句柄工具

    【标题】"鼠标移动获取窗口句柄工具"是一款原创软件,设计用于方便用户在Windows操作系统中快速、准确地获取目标窗口的句柄信息。这款工具适用于开发者、测试人员或者对系统有深入研究的用户,他们可能需要在各种...

    VB 获取鼠标位置

    这两个事件都可以帮助我们获取鼠标的位置信息。 1. **MouseMove事件**: 当鼠标在窗体或控件上移动时,可以使用`MouseMove`事件来获取鼠标的当前位置。在事件处理程序中,你可以访问`X`和`Y`坐标,它们分别代表...

    火狐兼容获取鼠标的坐标

    标题“火狐兼容获取鼠标的坐标”涉及到的是在网页开发中如何在Firefox浏览器上获取鼠标指针的位置。在Web开发中,特别是在JavaScript编程中,获取鼠标坐标是一项常见的需求,用于实现各种交互效果,如拖放功能、点击...

    DELPHI获取鼠标当前句柄并执行操作

    在 DELPHI 开发环境中,有时我们需要实现一种功能:当鼠标移动到某个窗口或控件上时,能够获取到鼠标的当前位置,并对相应的窗体进行特定的操作。标题“DELPHI获取鼠标当前句柄并执行操作”正是描述了这样一个功能。...

    java获取鼠标坐标位置swing

    标题"java获取鼠标坐标位置swing"指的是利用Java Swing来编程,实现在Swing组件上显示鼠标移动时的坐标位置。 首先,要获取鼠标坐标,我们需要导入必要的Java Swing库,如`javax.swing.*` 和 `java.awt.event.*`。...

    Opencv获取鼠标坐标值(三种方式均可以)

    在OpenCV库中,获取鼠标坐标值是进行交互式图像处理的一个重要功能。这使得用户能够在运行时选择图像上的特定区域或进行其他形式的交互。本文将详细解释三种不同的方法来实现这一目标,并且这些方法都在VS2013环境下...

    WPF获取鼠标在屏幕的位置

    在Windows Presentation Foundation (WPF) 中,开发人员经常需要获取鼠标在屏幕上的位置信息,以便实现各种交互功能,如拖放操作、鼠标跟随效果等。`Mouse.Capture` 是WPF提供的一种机制,用于捕获鼠标输入,即使...

    [QT]获取鼠标坐标以及按键响应

    在这个特定的【QT】获取鼠标坐标以及按键响应的项目中,我们可以深入探讨以下几个关键知识点: 1. **QT事件处理**: QT中的事件处理是基于信号和槽机制的。当用户进行鼠标点击或键盘按键操作时,系统会产生相应的...

    66.(cesium篇)cesium鼠标移动获取地图信息.zip

    【标题】"66.(cesium篇)cesium鼠标移动获取地图信息"涉及的知识点主要集中在使用Cesium JavaScript库来实现地图交互功能,特别是如何在用户鼠标移动时获取地图上的详细信息。Cesium是一个开源的3D地球浏览器,常...

    鼠标移动DataGrid显示详细信息

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要讲述的是如何实现在鼠标移动到 DataGrid 的某一行时,显示出该行的详细信息。DataGrid 是一种常用的 Web 控件,用于展示表格形式的数据。下面我们...

    labview鼠标拖动移动

    每次鼠标移动,都要调用“获取鼠标位置”函数,计算出物体的新位置,并更新物体的位置属性。 5. **实时显示坐标**:为了实时显示物体的坐标,可以在前面板上添加两个数值显示控件,分别用于X轴和Y轴坐标。在“鼠标...

    获取鼠标位置的RGB颜色参数源码

    这个程序会在控制台上实时显示鼠标移动时的RGB颜色信息。然而,由于控制台本身无法显示颜色,你可以考虑将颜色信息保存到文件或使用图形界面展示。 在实际应用中,可能还需要处理一些边界情况,比如鼠标移出屏幕...

    随鼠标移动动态显示xy坐标

    - **JavaScript**: 使用JavaScript来编写逻辑处理代码,实现鼠标移动时坐标值的获取与显示。 - **AJAX**: 异步JavaScript和XML技术,用于在不重新加载整个网页的情况下与服务器交换数据并更新部分网页内容。 - **DOM...

    .NET获取鼠标坐标源码

    当鼠标在窗体上移动时,`MainForm_MouseMove`方法会被调用,我们可以通过`MouseEventArgs`的`Location`属性获取鼠标在窗体内的相对坐标,通过`Control.MousePosition`获取屏幕上的绝对坐标。 如果你想要在非窗体或...

Global site tag (gtag.js) - Google Analytics