5

我已经pointer-events: none使用 jQuery 在 Raphael 元素上实现了,如下所示:

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

这工作正常,但当然在 IE8 中,Raphael 使用 VML 而不是 SVG,这个解决方案失败了。

有没有人有另一种解决方案来让 Raphael 元素忽略事件。

4

1 回答 1

7

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

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

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

于 2012-06-08T17:57:18.333 回答