5

Các phần tử canvas được định vị hoàn toàn của tôi đang chặn tất cả các sự kiện chuột để không có gì bên dưới chúng có thể được nhấp, cùng một vấn đề được đề cập herehere.IE9 Chuyển tiếp các sự kiện chuột qua phần tử canvas masking

Tôi có nhiều lớp canvas cần phải ở chỉ mục z cụ thể nên tôi cần chuyển tiếp các sự kiện chuột qua canvas. pointer-events: none; công trình trong các trình duyệt tốt, nhưng đối với IE9 Tôi cần javascript để làm điều đó, đây là giải pháp hiện tại của tôi,

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); 
       }); 
      }); 

dụ làm việc, jsFiddle

câu hỏi;

1. Tôi đang tạo sự kiện mới và chuyển qua dữ liệu có liên quan, có an toàn khi vượt qua biến số evt var với mục tiêu và mục tiêu hiện tại được sửa đổi không?

2. Làm thế nào tôi có thể thúc đẩy nhấp chuột phải?

Hoặc có ai có cách nào tốt hơn để thực hiện việc này không? Các câu hỏi liên quan khác khá cũ.

Trả lời

3

Không có sạch cách để vượt qua các sự kiện trên trình duyệt. Bạn có thể vượt qua sự kiện (đã sửa đổi) nhưng bạn không thể đảm bảo rằng nó sẽ hoạt động như nó có thể có một cách tự nhiên, đặc biệt là trình duyệt chéo.

Đối với click chuột phải sử dụng mã của bạn chỉ cần làm điều này: http://jsfiddle.net/6WMXh/20/

(bạn nửa sử dụng phần jquery thêm thông tin nhưng không bao giờ làm bất cứ điều gì với nó)

+0

Tôi đang cố gắng để gửi các sự kiện thông qua vải, không vào canvas. Trong IE9, bất kỳ phần tử nào bên dưới canvas không nhận được các sự kiện nhấp chuột được truyền vào nó. Bạn có thể thấy những gì tôi có nghĩa là [ở đây] (http://jsfiddle.net/VvPPW/1/) trong IE9. – Andrew

+0

Oh derp, tôi đã không nhận thấy các yếu tố bên dưới không phải là tranh vẽ! Tôi đã chỉnh sửa câu trả lời của tôi nhưng thực tế đáng buồn ở đây là vẫn không có cách nào vàng để làm điều đó. –

+0

Ngoài ra, tôi đã thêm một giải pháp cho bit nhấp chuột phải của bạn –

Các vấn đề liên quan