通过拖动元素传递 mouseover 事件

Posted

技术标签:

【中文标题】通过拖动元素传递 mouseover 事件【英文标题】:pass mouseover event through dragging element 【发布时间】:2012-10-06 13:59:03 【问题描述】:

我有一个自定义的可拖动元素(拖动开始于单击并结束于单击),可以将其拖放到某些区域。在鼠标悬停区域决定它是否接受当前可拖动,并分别改变它的颜色。在客户决定将可拖动元素放置在光标的上方和左侧之前,一切都像魅力一样发挥作用,这就是故事的开始。

当我移动它时,我意识到鼠标悬停事件现在转到可拖动区域,而不是区域。我做了一些搜索,发现了魔法

pointer-events:none

CSS 属性。不幸的是,这在 IE9 中不起作用,而 it 是我们的目标浏览器。

这是一个简单的例子:http://jsfiddle.net/q9njK/5/

问题是:我能不能让它在 IE9 中工作,而不是直接观察 mousemove 并计算指针指向哪个区域?

Edit_1:“直接观看 mousemove”我的意思是这样的解决方案:http://jsbin.com/uhuto 在 mousemove 的情况下它会很慢而且很难看。嗯,我知道,“缓慢而丑陋”是 IE 的座右铭,但如果在某个地方存在更优雅的解决方案,我想知道。

Edit_2:似乎 IE9 不支持 pointer-events: none,即使是 SVG(这是一个示例,在 IE9 中不起作用:http://jsfiddle.net/q9njK/9/),所以除了绑定到 document.mousemove 之外别无他法。还是这样?

【问题讨论】:

你可以试试这里实现的解决方案***.com/a/6938521/122005 我没有 IE 来测试,所以不能确定,但​​如果你使用图像,这个答案可能会起作用? ***.com/a/4839672/891971 【参考方案1】:

不,相信我;我试过了

遇到了和你完全相同的问题,结果把我的头撞到墙上,只发现你做了什么;指针事件有效,但在 IE9 中无效。

您将不得不使用 js 来克服这个问题 - 抱歉。

一切顺利,

-莱德杰

【讨论】:

实际上,我们已经成功说服客户他不想要它。成功。

以上是关于通过拖动元素传递 mouseover 事件的主要内容,如果未能解决你的问题,请参考以下文章

mouse事件(mouseleave,mouseenter,mouseout,mouseover)

几个mouse事件的特点

js事件(Event)知识整理

mouseovermouseout,mouseentermouseleave区别

js按下鼠标mousedown并mousemove的时候,如何保持鼠标样式全屏不变?

jQuery事件