ngăn chặnDefault() không hoạt động trong trường hợp này, khiến Google dựa vào tùy chỉnh trình xử lý sự kiện để xử lý các sự kiện nhấp trên nút này. Khi preventDefault() ngăn chặn hành vi mặc định của trình duyệt.
Ví dụ: nếu nút này thuộc loại = "gửi", ngăn chặn mặc định trên sự kiện nhấp chuột sẽ ngăn chặn hành vi mặc định của trình duyệt đang gửi biểu mẫu. Nhưng trong trường hợp này, bấm được xử lý bởi eventListeners được thêm vào chính nút đó. preventDefault() sẽ không ảnh hưởng đến việc bắt một sự kiện của chúng. Cũng stopPropagation(), bởi vì nó dừng truyền bá sự kiện đến các mức cao hơn của DOM, trong khi các eventListeners khác trên cùng một mức (nút trong trường hợp của chúng ta) vẫn nhận được sự kiện. stopImmediatePropagation() có thể hoạt động theo lý thuyết, nhưng chỉ khi eventListener của bạn được thêm trước khi google. Vì vậy, cách dễ nhất để ngừng tuyên truyền là dừng một sự kiện trước khi nó đạt đến nút nút, và đó là trong giai đoạn chụp, vì nút là phần tử thấp nhất trong cấu trúc phân cấp. Điều này có thể được thực hiện bằng cách thông qua đúng tranh cãi khi thêm eventListener
document.body.addEventListener("click", function (event) {
event.stopPropagation();
}, true);
Bằng cách này sự kiện sẽ được dừng lại trước khi giai đoạn bong bóng, và vì vậy trước khi nó đạt đến eventListeners bổ sung vào nút. Thông tin thêm về các giai đoạn chụp và bong bóng here
Lưu ý rằng ngăn chặnDefault() không cần thiết trong trường hợp này. Trên thực tế, trình xử lý sự kiện của nút này là để ngăn chặn mặc định.Dưới đây là những eventListeners, cho nhấp chuột và KeyUp tương ứng: gọi
d = function(a) {
c.Xa.search(c.yc(), b);
return s_1vb(a)
}
function(a) {
13 != a.keyCode && 32 != a.keyCode || d(a)
}
lưu ý để s_1vb, đây là sourse của nó:
s_1vb.toString();
/*"function (a){
a&&(a.preventDefault&&a.preventDefault(),a.returnValue=!1);
return!1
}"*/
Về cơ bản một chức năng của nó mà phải mất một sự kiện và làm mọi thứ có thể để ngăn chặn trình duyệt hành vi mặc định
Nhân tiện, hành vi mặc định có thể bị hủy trên bất kỳ giai đoạn nào của luồng sự kiện (se Events Specification), bao gồm cả giai đoạn cuối cùng, khi nó đạt đến tài liệu. Chỉ sau khi nó được thông qua "thông qua" tất cả các eventListeners uncanceled, trình duyệt nên thực hiện hành vi mặc định của nó. Vì vậy, việc gắn trình lắng nghe của bạn vào tài liệu không phải là lý do ngăn chặnDefault() không hoạt động, đó là bởi vì đó là do nhầm lẫn với công việc :)
Tôi đã thử sử dụng $ ('*'). Vẫn còn hành vi tương tự. – NaveenBharadwaj
Nếu bạn chỉ muốn ngăn chặn bất kỳ đầu vào của người dùng, tôi sẽ thêm một div bao gồm tất cả các cơ thể – Hacketo
@ Hacketo, tôi phải làm điều này trên bất kỳ trang web mà tôi tải trong trình duyệt. Tôi không có một HTML của riêng tôi. – NaveenBharadwaj