Chúng tôi đang làm việc trên một công cụ JavaScript có mã cũ hơn trong đó, vì vậy chúng tôi không thể viết lại toàn bộ công cụ.Làm cách nào để xử lý một nhấp chuột ở bất kỳ đâu trong trang, ngay cả khi một phần tử nhất định dừng quá trình truyền?
Bây giờ, một menu đã được thêm vào vị trí cố định ở phía dưới và khách hàng rất thích nó để có nút bật/tắt để mở và đóng menu, ngoại trừ việc đóng cần phải tự động xảy ra khi người dùng bắt đầu thực hiện mọi thứ của trình đơn, ví dụ: khi người dùng quay trở lại trang và chọn thứ gì đó hoặc nhấp vào trường biểu mẫu.
Điều này có thể về mặt kỹ thuật làm việc với một sự kiện click
trên body
, gây ra trên bất kỳ nhấp chuột, tuy nhiên có rất nhiều mặt hàng trong các mã cũ, nơi mà một sự kiện nhấp chuột đã được xử lý vào một liên kết nội bộ, và return false
đã được thêm vào nhấp chuột , để trang web không tiếp tục với thẻ href
của liên kết.
Vì vậy, rõ ràng, một chức năng chung như thế này không hoạt động, nhưng không phải khi được nhấp vào một liên kết nội bộ trong đó trả về false dừng quá trình truyền.
$('body').click(function(){
console.log('clicked');
});
Có cách nào tôi có thể buộc các sự kiện cơ thể nhấp chuột anyway, hoặc là có một cách khác để tôi có thể để cho biến mất menu, sử dụng một số sự kiện click toàn cầu hay bất cứ điều gì tương tự?
Không cần phải viết lại tất cả các nhấp chuột khác trong ứng dụng đã được tạo năm trước. Đó sẽ là một nhiệm vụ quái vật, đặc biệt là kể từ khi tôi không có đầu mối làm thế nào tôi sẽ viết lại chúng, mà không có sự trở lại sai, nhưng vẫn không để cho họ đi đến href
của họ.
Đối với bất cứ ai tự hỏi nếu họ có thể sử dụng này, đây là trang caniuse: http://caniuse.com/#feat=addeventlistener câu trả lời ngắn là có, miễn là bạn không quan tâm về IE8 –