2010-08-04 23 views
10

Tôi muốn hiển thị tệp trợ giúp đã chọn của người dùng khi nhấn F1. Điều này sẽ hoạt động trên mọi trình duyệt mà tôi kiểm tra ứng dụng của mình. Làm cách nào để ngăn tệp trợ giúp mặc định hiển thị?Internet Explorer hoặc bất kỳ phím nào của Trình duyệt F1 hiển thị trợ giúp của riêng bạn

+0

“này nên hoạt động trên mọi trình duyệt mà tôi kiểm tra ứng dụng của tôi.” → Cái nào? –

+0

Tệp trợ giúp tôi phải mở sẽ hoạt động trên mọi trình duyệt như Mozila, IE và các trình duyệt khác. Nếu tôi nhấn F1 trên bất kỳ trình duyệt nào, tập tin trợ giúp mặc định sẽ không được hiển thị – Dotnet

+0

Tôi giả định một câu hỏi tồn tại ... nhưng tôi dường như không thể tìm thấy một câu hỏi. – Stephen

Trả lời

15

AFAIK, hành động mặc định của phím F1 có thể được thay đổi trong bất kỳ trình duyệt nào ngoại trừ IE. Các nhóm Microsoft thường là người gắn bó để duy trì trải nghiệm người dùng nhất quán trên các ứng dụng của họ và đó là lý do tại sao F1 mở trợ giúp bất kể trả lại false. Điều đó đang được nói, có một giải pháp thay thế theo hình thức của sự kiện window.onhelp.

// Internet Explorer 
if ("onhelp" in window) 
    window.onhelp = function() { 
     showMyHelpInsteadOfTheUsualDefaultHelpWindow(true); 
     return false; 
    } 
// Others 
else { 
    document.onkeydown = function(evt) { 
     cancelKeypress = (evt.keyCode == 112); 
     if (cancelKeypress) { // F1 was pressed 
      showMyHelpInsteadOfTheUsualDefaultHelpWindow(true); 
      return false; 
     } 
    } 

    // Additional step required for Opera 
    document.onkeypress = function(evt) { 
     if (cancelKeypress) 
      return false; 
    } 
} 

"Khác" bước được chuyển thể từ một câu trả lời bị xóa, được chuyển thể từ another answer đó, lần lượt, được chuyển thể từ another answer.

+1

Ôi không, họ cố gắng ngăn chặn mangling trải nghiệm người dùng bình thường (không phải là điều xấu, IMHO), nhưng họ cung cấp chức năng khác (dễ dàng hơn) để có thể thực hiện chính xác điều đó? –

+0

@Marcel: Tôi đã nói sai. Sự kiện * onhelp * được cố ý cung cấp để thay thế trợ giúp mặc định, nhưng nó cũng cố ý rằng phím F1 không thể bị hủy bỏ. Lạ thật, tôi biết. –

2

Trên thực tế, bạn có thể hủy Trợ giúp mẹ đẻ trong IE, bằng cách thiết lập event.keyCode để 0:

Tested trong IE8 & Chrome

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(function() { 
       var cancelKeypress = false; 
       // Need to cancel event (only applies to IE) 
       if ("onhelp" in window) { 
        // (jQuery cannot bind "onhelp" event) 
        window.onhelp = function() { 
         return false; 
        }; 
       } 
       $(document).keydown(function (evt) { 
        // F1 pressed 
        if (evt.keyCode === 112) { 
         if (window.event) { 
          // Write back to IE's event object 
          window.event.keyCode = 0; 
         } 
         cancelKeypress = true; 

         // Trigger custom help here 
         alert("My help"); 

         return false; 
        } 
       }); 
       // Needed for Opera (as in Andy E's answer) 
       $(document).keypress(function (evt) { 
        if (cancelKeypress) { 
         cancelKeypress = false; // Only this keypress 
         return false; 
        } 
       }); 
      }); 
     </script> 
    </head> 
    <body> 

    </body> 
</html> 
Các vấn đề liên quan