2011-10-17 32 views
11

Tôi đang chụp giá trị bấm phím '191' cho dấu gạch chéo chuyển tiếp (/) cho một đối tượng địa lý trên trang web của tôi. Hoạt động tốt trên mọi trình duyệt ngoại trừ Firefox do tính năng Tìm kiếm nhanh của nó. Các '191' vẫn đăng ký và hành động được thực hiện (tập trung vào một lĩnh vực đầu vào, văn bản trợ giúp popup), nhưng trọng tâm đi đến Tìm kiếm nhanh.Cách bỏ qua tính năng Tìm kiếm nhanh của Firefox và chụp dấu gạch chéo về phía trước

Tôi đọc trong câu hỏi StackOverflow khác nói rằng Firefox chụp dấu gạch chéo về phía trước làm mã ký tự '0', nhưng điều đó không làm gì cả.

Có cách nào tôi có thể bỏ qua Tìm kiếm nhanh của Firefox và kiểm soát dấu gạch chéo về phía trước không? Sử dụng JavaScript và jQuery.

+2

Trước tiên hãy hỏi bạn có nên ** làm điều này không. Theo nguyên tắc chung, tôi sẽ nghĩ hai lần (hoặc nhiều hơn) trước khi làm bất cứ điều gì làm thay đổi hành vi mong đợi của trình duyệt mà không có sự hiểu biết và đồng ý của người dùng. Làm như vậy sẽ phục vụ chủ yếu là để làm thất vọng và xa lánh những người dùng đó. (Tất nhiên, tôi nói điều này mà không biết gì về ứng dụng của bạn; có thể bạn có lý do chính đáng để muốn hành vi này.) – eaj

+0

Đặt cược tốt nhất của bạn là chọn một phím tắt khác. Ngay cả khi bạn giải quyết vấn đề này ngày hôm nay, không có gì nói rằng một bản cập nhật mới cho Firefox sẽ không chỉ phá vỡ nó một lần nữa. Tốt nhất để tránh xung đột hoàn toàn. –

+0

Có một trường hợp khác mà điều này thực sự cần thiết: nếu người dùng có tùy chọn "Tìm kiếm văn bản khi tôi bắt đầu nhập" thì thanh tìm kiếm sẽ bật lên gần như bất kỳ phím * nào được nhấn bên ngoài hộp văn bản. – Herohtar

Trả lời

9

Tôi đồng ý rằng điều quan trọng là đặt câu hỏi liệu bạn có nên sử dụng lối tắt đó hay không. Tuy nhiên, nếu bạn quyết định (như những người khác - đó là phím tắt tìm kiếm trong gmail), bạn chỉ cần nắm bắt sự kiện keydown tài liệu (không nhấn phím hoặc khóa) và sau đó ngăn chặn hành động mặc định, sẽ chặn trong thời gian dừng hành vi firefox mặc định. Ngoài ra, hãy đảm bảo kiểm tra xem người dùng chưa nhập vào trường văn bản hay chưa. Dưới đây là ví dụ nhanh:

$(document).keydown(function(e) { 
    var _target = $(e.target); 
    var _focused = $(document.activeElement); 
    var _inputting = _focused.get(0).tagName.toLowerCase()==="textarea" || _focused.get(0).tagName.toLowerCase()==="input"; 

    ///(forward slash) key = search 
    if (!_inputting && e.keyCode===191) { 
     e.preventDefault(); 
     $("#search-input").focus(); 
     return; 
    } 
}); 
+1

'e.preventDefault()' bên trong sự kiện 'keydown' cũng hoạt động khi người dùng có" Tìm kiếm văn bản khi tôi bắt đầu nhập "được bật trong Firefox. – Herohtar

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