私の絶対配置されたキャンバス要素は、マウスイベントをすべてブロックするので、その下のものはクリックできません。hereおよびhereという同じ問題が発生します。IE9マスキングキャンバス要素を介したマウスイベントの転送
私は特定のzインデックスにある必要がある複数のキャンバスレイヤーを持っているので、マウスイベントをキャンバスに転送する必要があります。 pointer-events: none;
良いのブラウザで動作しますが、IE9のために、私にはJavaScriptを実行する必要があり、ここに私の現在のソリューション、
var evts = [ 'click', 'mousedown', 'mouseup', 'dblclick'],
canvases = $('canvas');
$.each(evts, function(_, event){
canvases.bind(event, function(evt){
var target,
pEvent;
$(this).hide();
target = document.elementFromPoint(evt.clientX, evt.clientY);
$(this).show();
pEvent = $.Event(event);
pEvent.target = target;
pEvent.data = evt.data;
pEvent.currentTarget = target;
pEvent.pageX = evt.pageX;
pEvent.pageY = evt.pageY;
pEvent.result = evt.result;
pEvent.timeStamp = evt.timeStamp;
pEvent.which = evt.which;
$(target).trigger(event, pEvent);
});
});
の作業例、 jsFiddle
質問です。
1.私は新しいイベントを作成して関連するデータを渡していますが、evt
のvarをターゲットとcurrentTargetに変更して渡すのは安全でしょうか?
2.私はどのように右クリックを伝えることができますか?
これを行うには誰かより良い方法がありますか?他の関連する質問はかなり古いです。
私はキャンバスを通じてイベントを送信しようとしていますよ、キャンバスにではありません。 IE9では、キャンバスの下にある要素にはクリックイベントが渡されません。あなたはIE9で私が[ここ](http://jsfiddle.net/VvPPW/1/)を意味するものを見ることができます。 – Andrew
Oh derp、私は以下の要素が非キャンバスであったことに気付かなかった!私は自分の答えを編集しましたが、ここで悲しい事実はそれを行うための金色の方法がまだないということです。 –
また、あなたの右クリックビットの解決策を追加しました –