onmousemove 仅在右键单击时触发

Posted

技术标签:

【中文标题】onmousemove 仅在右键单击时触发【英文标题】:onmousemove triggers only on rightclick 【发布时间】:2014-09-19 08:38:01 【问题描述】:

我对 onmousemove 有疑问。我创建了一个 div 元素并向其中添加了onmousemove="doSomething()",但它不起作用。到目前为止,我一直尝试使用addEventListener()object.onmousemove=doSomething() 来完成它,并且我已经将重要代码从w3schools 复制到我的页面末尾,它可以正常工作。

我发现两个代码都会触发一个事件,该事件工作正常 - 当鼠标移动时,所有函数都按应有的方式执行 - 当我使用 onmousemove 右键单击​​元素时。如果我尝试使用事件侦听器,也会发生同样的情况。

关于如何解决这个问题的任何想法?

编辑:我现在发现真正的问题是,页面作​​为其他页面表单中的操作加载。 (创建一个 onmousemove 工作的文件,然后尝试使用相同的表单加载它)该表单正在上传文件 - 图像,我正在使用 xampp。

【问题讨论】:

我已经从 w3schools 复制了重要代码如果你想好好学习,请不要参考那个网站 w3schools 参考只是在我的 Chrome 上运行的代码。现在我尝试在正文的末尾添加一个 iframe 并删除了它的 onload。还是一样 - 仅适用于右键单击。我正在使用 XAMPP 顺便说一句,该文件是 .php 并在表单提交(发布)之后显示。 【参考方案1】:

首先你应该分配函数而不是结果

  -> object.onmousemove=doSomething    // no brackets

添加事件监听器也是如此

 object.addEventListener('mousemove', doSomething , false);

【讨论】:

这不是答案。对不起。 :D【参考方案2】:

嘿试试这个来捕捉页面上的鼠标移动事件

var xPrev = 0;
jQuery(document).ready(function()

   $(document).mousemove(function(e)
       xPrev<e.pageX ? $('#lr').html("right") : $('#lr').html("left");
       xPrev=e.pageX;
      $('#status').html(e.pageX +', '+ e.pageY);

   ); 
)

DEMO

【讨论】:

OP 从未提及 jQuery 好吧,抱歉,我没有看到问题被标记为 javascript 谢谢,但我还没学过 jQuery jet,因为我可以用 javascript 做任何事情。我知道它“更难”,但这没关系。在 javascript 中,我确实尝试将事件添加到文档中 - document.addEventListener ...- 或类似的东西。结果相同。

以上是关于onmousemove 仅在右键单击时触发的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse插件:在右键单击弹出菜单中添加了新项,如何确定文件名/路径?

使用 JavaScript 如何禁用右键单击或单击滚动条时如何在右键单击窗口中删除检查元素选项

Visual Studio 2013 在右键单击时挂起

我想在右键单击时制作 oncontextmenu 事件

为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?

Ajax 在 div 中加载页面内容,但在右键单击时保持“在新选项卡中打开”