指针事件:无VML raphael解决方案

MAL*_*ALK 5 javascript svg raphael

pointer-events: none使用jQuery 实现了Raphael元素,如下所示:

var raphaelElement = Raphael.ellipse(x,y,w,h);
$(raphaelElement.node).css({'pointer-events': 'none'});
Run Code Online (Sandbox Code Playgroud)

这很好但当然在IE8中,Raphael使用VML而不是SVG,这个解决方案失败了.

有没有人有另一个解决方案,基本上使Raphael元素忽略事件.

Phr*_*ogz 7

使IE8(及更早版本)工作的唯一方法是实际捕获事件,并在事件处理程序中:

  1. 隐藏元素(.style.display='none')
  2. 使用该elementFromPoint() 方法查找'捕手'下方的下一个元素
  3. 在该元素上重新创建并触发事件(另请参阅此内容)
  4. 再次展示捕手(.style.display='')

这种通用方法(减去步骤3)已经在IE上使用了10多年,允许用户直接在光标下拖动元素,同时仍然检测到下面可能的放置目标元素的"鼠标悬停".