5

pointer-events: none次のように jQuery を使用して Raphael 要素に実装しました。

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

これは問題なく動作しますが、もちろん IE8 では、Raphael は SVG の代わりに VML を使用しており、このソリューションは失敗します。

基本的に Raphael 要素にイベントを無視させる別の解決策はありますか?

4

1 に答える 1

7

The only way to make this work for IE8 (and earlier) would be to actually catch the event, and in the event handler:

  1. hide the element (.style.display='none')
  2. use the elementFromPoint() method to find the next element below the 'catcher'
  3. re-create and fire the event on that element (see also this)
  4. show the catcher again (.style.display='')

This general approach (minus step 3) has been used for over 10 years on IE to allow the user to drag an element with it directly under the cursor while still detecting the 'mouseover' of possible drop target elements underneath.

于 2012-06-08T17:57:18.333 に答える