2009-07-15 51 views
6

EDIT: Sau khi chờ đợi một thời gian và đã không nhận được bất cứ điều gì chưa, tôi đã quyết định để làm phím tắt vô hiệu hóa thingy chỉ cho IE bây giờ. Có khả năng vô hiệu hóa các phím tắt IE để truy cập các menu/in v.v. qua vbscript không?phím tắt Disable Internet Explorer

Có thể tắt phím tắt của trình duyệt không?

Vì nhiều người trong số họ đang sử dụng trong ứng dụng. Ví dụ: Ctrl + p đang sử dụng và tôi không muốn trình duyệt bật lên cửa sổ in.

+0

Bạn có quản lý để làm việc này không? Tôi đang gặp vấn đề tương tự và không thể tìm thấy giải pháp nào. –

+0

@DianaAmza, tôi không thể tìm thấy giải pháp cho việc này. IE sẽ không cho phép bạn ghi đè hành vi mặc định. –

+0

OK, Cảm ơn bạn! –

Trả lời

4

Có, bạn có thể nghe các tổ hợp phím khác nhau bằng javascript và tắt các hành vi mặc định. Thậm chí còn có một thư viện mà bạn có thể sử dụng và kiểm tra here. Tôi chỉ thử nghiệm nó bằng cách sử dụng google chrome và firefox trong textarea demo của họ, và nó hoạt động như bạn muốn.

shortcut.add("Ctrl+P",function() { 
    return; 
}); 

Điều này làm việc trong trình duyệt mà tôi liệt kê ở trên, nhưng IE sẽ không cho phép bạn ghi đè hành vi mặc định trong một số trường hợp.

lựa chọn duy nhất của bạn trong IE là để vô hiệu hóa phím Ctrl hoàn toàn với cái gì đó như:

document.onkeydown = function() { 
    if (event.keyCode == 17) alert('Ctrl Key is disabled'); 
}; 

Mà không phải là lý tưởng và có lẽ không phải những gì bạn muốn, nhưng nó sẽ làm việc.

+0

Nhận cửa sổ in trên Ctrl + P: ( –

+0

Tôi đã mệt mỏi bằng cách sử dụng bảng điều khiển "Thực thi trực tiếp" bên dưới. Tôi thay đổi khóa từ "Ctrl + Shift + X" thành "Ctrl + P" và hiển thị cửa sổ in Nó có nghĩa là trình duyệt vẫn đang nghe các phím. Tôi đang sử dụng firefox 3. –

+1

Có một số thao tác bạn không thể tắt. – Boldewyn

3

Bạn có thể thử tạo trình xử lý sự kiện cho sự kiện nhấn phím, kiểm tra mã khóa và ngăn tác vụ mặc định của nó nếu cần. Tuy nhiên, điều này sẽ không hoạt động trên tất cả các trình duyệt.

Một ví dụ cho Firefox (hủy "Print" chìa khóa ngắn, xác minh):

document.addEventListener("keydown", function(oEvent) { 
    if (oEvent.keyCode == 80 && oEvent.ctrlKey) 
     oEvent.preventDefault(); 
}, false) 
+0

Cảm ơn Sergey. Bất kỳ ý tưởng gì tương tự cho IE. –

+0

Không, đoán không có cách nào để ngăn chặn lối tắt trong IE. Nhưng nó thực sự có ý nghĩa gì không? Người dùng vẫn có thể in hoặc dán văn bản bằng cách truy cập menu. –

+0

Tôi đã tắt một số phím và làm cho chúng được sử dụng cho một số mục đích khác. Trên thực tế, nó là một yêu cầu khi hệ thống lần đầu tiên được viết trên máy tính để bàn và bây giờ nó đang chuyển sang web. Và trong giai đoạn chuyển đổi đầu tiên này, họ muốn người dùng có cùng trải nghiệm. Sử dụng một số phím thường xuyên cho một số mục đích và ctrl + p là một trong những sử dụng. –

1

tôi đang làm việc trên vấn đề tương tự, hooking keyboard event Dưới đây đang hoạt động tốt để vô hiệu hóa, trừ các đối tượng flash trên trình duyệt IE có không tập trung. Vì tôi đang cố gắng xử lý sự kiện bàn phím trên đối tượng flash, mã này không hoạt động đối với tôi.

function hookKeyboardEvents(e) { 
    // get key code 
    var key_code = (window.event) ? event.keyCode : e.which; 

    // case :if it is IE event 
    if (window.event) 
    { 
     if (!event.shiftKey && !event.ctrlKey) { 
      window.event.returnValue = null; 
      event.keyCode = 0; 
     } 
    } 
    // case: if it is firefox event 
    else 
     e.preventDefault(); 
} 

window.document.onkeydown = hookKeyboardEvents; 
+0

Mã này ngăn tất cả các nét chính và chỉ hoạt động với firefox – Oki

+0

Bất kỳ may mắn nào về thứ gì đó cũng có thể hoạt động cho IE? –

+0

bạn đang chuyển sang "e" chứ không phải "sự kiện". vì vậy hãy thay đổi tất cả các tham chiếu đến "window.event" hoặc sử dụng "e". Chắc họ giống nhau. –

1

Từ bạn ứng dụng sau khi gọi phương thức trên Ctrl + P chỉ cần thực hiện keycode như zero.I nghĩ rằng sẽ giải quyết vấn đề của bạn ...

window.event.keyCode = 0;

này sẽ đặt mã phím như zero..So khi kiểm tra nhà thám hiểm cho keyCode nó sẽ là zero ... do đó, chức năng mặc định sẽ không thực hiện ...

Hãy thử điều này ... chỉ là một gợi ý

+0

Không hoạt động cho IE11 –

0

Điều này làm việc cho tôi trong IE 8. Phần quan trọng là IE yêu cầu ev.returnValue được đặt thành false. LƯU Ý: điều này chỉ hoạt động nếu bạn đã tập trung vào một số yếu tố trên tài liệu ... đó là, nếu bạn chỉ cần tải trang và nhấn 'ctrl-p' bạn sẽ thấy hộp thoại in. Nhưng nếu bạn bấm vào một nơi nào đó trên trang, sau đó thử nó, nó sẽ chặn hộp thoại in.

document.onkeydown = function (e) { 

    var ev = e||window.event; 

    // Do what I want keys to do ... 

    // Block browser short cuts 
    if(ev.preventDefault) // non-IE browsers 
     ev.preventDefault(); 
    else // IE Only 
     ev.returnValue = false; 
}; 
+1

bạn có thực sự kiểm tra điều này không? Bởi vì nó không xuất hiện để làm việc trong IE9 – Paul

+0

Vâng, tôi đã có điều này trong sản xuất trong nhiều năm và nó hoạt động tốt. Tuy nhiên, nó có thể là tôi quên để vượt qua trong tham số "e" ở trên. Chỉ cần chỉnh sửa nó. Tôi cũng đã thêm một lưu ý về thực tế là giải pháp này chỉ hoạt động khi tài liệu của bạn tập trung. Nếu không có tiêu điểm trên trang, hộp thoại in sẽ xuất hiện. Đừng nghĩ rằng có bất kỳ cách nào xung quanh điều này. – cakidnyc

2

Có một trick đẹp để chiến đấu với IE10 +, để tránh các menu trình duyệt hiển thị trên tổ hợp phím alt, như Alt + F, Alt + H ...

Gần đây tôi đã được sử dụng trên IE11, chỉ cần thêm một neo với thuộc tính accesskey: [yourKey] trên cơ thể

<body> 
    <a href="#" accesskey="f"></a> 
    <script type="text/javascript"> 
    window.onkeydown = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    window.onkeyup = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    </script> 
</body> 

Bây giờ khi bạn nhấn Alt + f trình duyệt sẽ không hiển thị "file cửa sổ bật lên" như thường lệ, và sẽ cho phép sự kiện KeyDown và KeyUp có được s cho bạn, và không chỉ keydown.

+0

Chỉ có giải pháp làm việc cho IE11. –