2009-07-15 16 views
6

EDIT: Po odczekał chwilę i nie dostał jeszcze nic, zdecydowałem zrobić skrót wyłączyć thingy tylko dla IE teraz. Czy istnieje możliwość wyłączenia klawiszy skrótu IE , aby uzyskać dostęp do menu/wydrukować itp. Przez vbscript?skrótów Wyłącz Internet Explorer

Czy można wyłączyć skróty przeglądarki?

Ponieważ wiele z nich korzysta z aplikacji. Na przykład: Ctrl + p używa i nie chcę przeglądarki, aby wyskoczyło okno drukowania.

+0

Udało ci się to uruchomić? Mam ten sam problem i nie mogę jeszcze znaleźć rozwiązania. –

+0

@ DianaAmza, nie mogłem znaleźć rozwiązania. IE nie pozwoli ci zastąpić domyślnego zachowania. –

+0

Okay, dziękuję! –

Odpowiedz

4

Tak, można słuchać różnych kombinacji klawiszy za pomocą javascript i wyłączyć domyślne zachowania. Istnieje nawet biblioteka, z której można korzystać i przetestować here. Właśnie przetestowałem go za pomocą Google Chrome i Firefoxa w ich tekstowym dokumencie tekstowym, i działa tak, jak chcesz.

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

Działa to w przeglądarkach wymienionych powyżej, ale IE nie pozwoli na zastąpienie domyślnego zachowania w niektórych przypadkach.

Jedyną opcją w IE jest całkowicie wyłączyć klawisz Ctrl z czymś takim:

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

co nie jest idealne i prawdopodobnie nie to, co chcesz, ale to będzie działać.

+0

Pierwsze okno drukowania na Ctrl + P :( –

+0

Po prostu zmęczyłem się przy użyciu poniższego panelu "Live Execution" Zmieniłem klucz z "Ctrl + Shift + X" na "Ctrl + P" i pokazałem okno drukowania Oznacza to, że przeglądarka wciąż nasłuchuje kluczy Używam firefox 3. –

+1

Jest kilka działań, których nie można wyłączyć. – Boldewyn

3

Możesz spróbować utworzyć procedurę obsługi zdarzenia dla zdarzenia keydown, sprawdzić kod klucza i jeśli to konieczne, zapobiec jego domyślnej akcji. To jednak nie będzie działać we wszystkich przeglądarkach.

Przykładem dla Firefoksa (anulowanie „Drukuj” krótki klucz, niezweryfikowany):

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

Dzięki Sergey. Każdy pomysł podobny do IE. –

+0

Nie, zgadnij, nie ma sposobu, aby zapobiec skrót w IE. Ale czy rzeczywiście ma sens, aby spróbować? Użytkownik nadal może drukować lub wklejać tekst, wchodząc do menu. –

+0

Muszę wyłączyć niektóre klawisze i sprawić, by były używane do innych celów. W rzeczywistości było to wymagane, ponieważ system został po raz pierwszy napisany na komputerze, a teraz przechodzi do sieci. I w tej pierwszej fazie transformacji chcą, aby użytkownicy mieli takie samo doświadczenie. Często używasz niektórych klawiszy, a ctrl + p to jedno użycie. –

1

pracuję nad podobnym problemem, hooking keyboard event poniższy kod działa dobrze wyłączyć, z wyjątkiem obiektu flash na IE nie ma zorientowałem się. Ponieważ próbuję obsługiwać zdarzenia klawiatury na obiekcie flash, ten kod nie działa dla mnie.

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

Ten kod zapobiega wszystkim uderzeniom klawiszy i działa tylko na firefox – Oki

+0

Czy jest coś, co może działać również w IE? –

+0

przechodzisz w "e", a nie "zdarzeniu". więc zmień wszystkie odniesienia do "window.event" lub użyj "e". Powinny być takie same. –

1

od ciebie aplikacji po wywołaniu metody na Ctrl + P tylko uczynić kod zgodnie zero.I myśleć, że rozwiąże problem ...

window.event.keyCode = 0;

to ustawi kod zgodnie zero..So gdy kontrole explorer dla keyCode będzie wynosić zero ... więc domyślna funkcja nie wykona ...

... Spróbuj to tylko sugestia

+0

Nie działa dla IE11 –

0

To działa dla mnie w IE 8. Ważną częścią jest IE wymaga ev.returnValue, aby ustawić na false. UWAGA: działa to tylko wtedy, gdy koncentrujesz się na jakimś elemencie dokumentu ... to znaczy, jeśli po prostu załadujesz stronę i klikniesz "ctrl-p", zobaczysz okno dialogowe drukowania. Ale jeśli klikniesz gdzieś na stronie, spróbuj, powinno to powstrzymać dialog drukowania.

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

czy faktycznie to przetestowałeś? Ponieważ nie wydaje się działać w IE9 – Paul

+0

Tak, miałem to w produkcji od wielu lat i działa dobrze. Mogę jednak zapomnieć o przekazaniu powyższego parametru "e". Po prostu to edytowałem. Dodałem także notatkę o tym, że to rozwiązanie działa tylko wtedy, gdy koncentruje się twój dokument. Jeśli nie zostanie ustawiona ostrość na stronie, pojawi się okno dialogowe drukowania. Nie myśl o tym w żaden sposób. – cakidnyc

2

Jest miły podstęp walczyć z IE10 +, aby uniknąć wyświetlania menu przeglądarki na kombinacji klawiszy alt, jak Alt + F, Alt + H ...

Niedawno używane na IE11, wystarczy dodać kotwicę z przypisują accesskey: [yourKey] na swoim ciele

<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> 

teraz po naciśnięciu Alt + f przeglądarka nie wyświetli „okienko File”, jak zwykle, i pozwoli wydarzenia keyDown i keyup dostać do ciebie i nie tylko do keydown.

+0

Tylko rozwiązanie, które działało w IE11. –

Powiązane problemy