2017-02-07 43 views
8

Pracuję na stronie internetowej, na której każda strona ma przyciski, takie jak "wyślij" i "anuluj". Każdy z tych przycisków ma atrybut accesskey. Atrybut accesskey przycisku przesyłania ma wartość S, a atrybut accesskey przycisku anulowania ma wartość C.Zmiana klawiszy modyfikujących accesskey w Firefox

Klawisze dostępu są aktywowane za pomocą różnych modyfikatorów w różnych przeglądarkach. Internet Explorer, Safari i Google Chrome używają tylko alt, podczas gdy Firefox używa zarówno klawiszy alt i shift. Ponadto, Firefox używa alt s do otwierania menu historii.

Odpowiedzi na to pytanie nie powinny sugerować zmiany ustawień w konfiguracji przeglądarki, ponieważ nie byłoby to możliwe w zakładzie produkcyjnym.

Jak mogę zmienić klawiszy modyfikujących, że Firefox używa do accesskey „s po prostu alt i zapobiec menu Historia z otwarciem?

Pracuję w Ubuntu 16.04.

+0

Jeśli istniejące odpowiedzi nie odpowiedzieć na to pytanie, proszę wyjaśnić _how_, pamiętając że nie wszystko jest możliwe, a jeśli tak nie jest, to jest poprawna odpowiedź. –

+0

@QPaysTaxes istniejące odpowiedzi nie działają przeglądarka Firefox w Ubuntu 16.04 –

+0

proszę podać mi odpowiednie rozwiązanie –

Odpowiedz

-2

Jeśli chcesz głęboką wiedzę o to spróbuj ten artykuł ma więcej info: http://kb.mozillazine.org/Ui.key.contentAccess

Jeśli okaże się, że nie może przyzwyczaić się do okna „w zakładce” Preferencje-istnieje preferencja, aby powrócić do starego okna stylu:

  1. w nowej karcie, wpisz lub wklej about: config w pasku adresu i naciśnij Enter. Kliknij przycisk obiecujący, aby zachować ostrożność.

  2. W polu wyszukiwania nad listą wpisz lub wklej pref i wstrzymać lista jest filtrowana

  3. Kliknij dwukrotnie preferencji browser.preferences.inContent przełączyć go z true na false

Uwaga: Nie wiem, czy to będzie w Firefoksie na zawsze, czy jest funkcją przejściową.

+0

Podaję pewne szczegóły na temat mojego pytania.i nie chcę niczego zmieniać w: config. –

6

Nie można - o ile wiem - zmienić kombinacji klawiszy wymaganych do aktywacji accesskey, ale to, co próbujesz osiągnąć, nie wymaga użycia atrybutu accesskey. Możesz bezpośrednio odsłuchać zdarzenie keydown.

Dodaj detektor zdarzeń zdarzeń kluczowych do dokumentu. W funkcji obsługi sprawdź, czy klawisze Alt i S są wciśnięte. Jeśli są - i nie są używane żadne inne klawisze modyfikujące - zapobiegają domyślnej akcji zdarzenia, a następnie uruchamiają zdarzenie kliknięcia na przycisku przesyłania.Wyzwalanie zdarzenie kliknij na przycisk przesyłania z kolei wywołać submit detektor zdarzeń, natomiast triggering the submit event on the form directly may not.

const submit = document.querySelector('#submit') 

document.addEventListener('keydown', e => { 
    // If the only modifier key is the alt key, and the s key is pressed 
    if(!e.metaKey && !e.ctrlKey && !e.shiftKey && e.altKey && e.key === 's') { 
    e.preventDefault() // Prevent the mozilla history menu from opening 
    submit.click()  // Trigger the form submission 
    } 
}) 
<form action=""><button type="submit" id="submit"><u>S</u>ubmit</button></form> 

Uwagi:
1. Choć to działa w obecnej stabilnej wersji Firefoksa , Nie testowałem innych wersji
2. W tym przykładzie zastosowano funkcje językowe wprowadzone w wersji The ECMAScript Language Specification z 2015 roku. Funkcje te nie są wymagane do osiągnięcia pożądanego efektu, ale ułatwiają czytanie kodu. Jeśli potrzebujesz obsługi starszych przeglądarek, możesz użyć var zamiast const i standardowej funkcji zamiast funkcji grubej strzałki.
3. Niestety, ze względu na piaskownice-funkcja fragment przepełnienie stosu nie działa na tym przykładzie, zobacz ten example on JSBin zamiast

+0

Odpowiedź nie działa przeglądarka Firefox w Ubuntu 16.04 –

+0

@bobmarti będziesz musiał dołączyć powtarzalny przykład nie działa w firefox na ubuntu, ponieważ powyższy przykład faktycznie działa dla mnie w firefox na ubuntu. –