2011-01-08 35 views
5

Tôi muốn phát hiện bất cứ khi nào ai đó nhấp vào một div (về cơ bản tôi muốn biết khi nào người dùng tương tác với một phần văn bản trên trang web của tôi) hoặc nhấp vào một liên kết), nhưng tôi không muốn can thiệp vào những gì người dùng đang làm.Phát hiện nhấp chuột trên div bằng Javascript mà không có tác dụng phụ

Nếu tôi đặt sự kiện onmousedown hoặc onclick trên div, nó sẽ phá vỡ lựa chọn, liên kết, v.v. Có cách nào để nắm bắt những sự kiện này mà không gây ra bất kỳ sự can thiệp nào không?

+0

Trừ khi bạn đặc biệt có mã can thiệp (chẳng hạn như đặt 'event.cancelBubble', gọi' event.stopPropagation() 'hoặc trả về true (hoặc một cái gì đó đúng) bạn mã không nên can thiệp. Bạn có thể hiển thị một ví dụ cụ thể không? – RoToRa

Trả lời

2

Vâng, tôi nghi ngờ bạn đang trở false ở phần cuối của sự kiện ràng buộc, chỉ cần không làm điều đó hay bất cứ những điều trong ràng buộc này:

$('a').click(function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    return false; 
}); 

Nếu bạn không làm bất cứ ba điều này, jQuery sẽ không ngăn sự kiện này phát ra từ trình duyệt.

Chỉnh sửa: Rất tiếc, không nhận ra đó là câu hỏi JavaScript đơn giản.

8

Onmousedown hoặc onclick không được can thiệp vào bất cứ điều gì miễn là khôngreturn false;.

Bạn có thể làm điều này:

document.getElementById("spy-on-me").onmousedown = function() { 
    console.log("User moused down"); 
    return true; // Not needed, as long as you don't return false 
}; 

Nếu bạn có các kịch bản khác được gắn hành vi thông qua phương pháp này trên trang web, sau đó để ngăn trọng họ, bạn có thể làm:

var spyElement = document.getElementById("spy-on-me"); 
var oldMousedown = spyElement.onmousedown; 
spyElement.onmousedown = function() { 
    console.log("User moused down"); 
    if(oldMousedown) oldMousedown(); 
}; 
0

bạn có thể sử dụng làm điều đó bằng cách thêm người nghe sự kiện cũng như

var myNode= document.querySelector('.imagegrid'); 
myNode.addEventListener("click",function(e){  
alert(e.target+" clicked"); 
}); 

Ví dụ tương tự được trình bày here

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