Pytanie "AutoComplete = Off" nie działa w przeglądarce Google Chrome [duplikat]


To pytanie już zawiera odpowiedź:

Wiem, że jest jedno podobne pytanie na Stackoverflow, ale żadne z rozwiązań tam nie działało dla mnie.

<form autocomplete="off" id="search_form" method="post" action="">
    <input autocomplete="off" type="text" />
</form>

Jak widać, umieściłem autocomplete=off na Zarówno formularz jak i pole wejściowe, ale Google Chrome nadal wyświetla tę listę autouzupełniania. Nie dzieje się tak w innych przeglądarkach, takich jak Firefox i Safari.

Każde inne rozwiązanie poza wprowadzaniem autocomplete=off na tagu formularza?


16
2017-08-19 03:35


pochodzenie


Którego rodzaju doctype używasz? - Adrift
Czy wyłączyłeś wszystkie dodatki do Chrome? - j08691
Jeśli wiesz, że istnieje podobne lub zasadniczo takie samo pytanie na SO, powinieneś to przynajmniej przytoczyć. Ale najlepiej przyczynić się do poprawy odpowiedzi na istniejące pytanie, zamiast tworzenia nowych kopii pytań, przy różnych zestawach odpowiedzi. - Jukka K. Korpela
To błąd w Chrome. mam <!DOCTYPE html> i autocomplete="off" zarówno na formularzu, jak i na polu i STILL automatycznie uzupełnia, nawet umieszczając mój adres e-mail w niewłaściwym polu name="user[credit_card]"! - Chloe
Wiem, że zostało to oznaczone jako duplikat, ale oto moje rozwiązanie. Ustawienie atrybutu autouzupełniania na "wyłączone" nie wyłącza autouzupełniania Chrome w nowszych wersjach Chrome. Zamiast tego musisz ustawić autouzupełnianie na każdym wejściu w następujący sposób <input autocomplete="smartystreets">  możesz ustawić autouzupełnianie na coś innego niż "włączony" lub "wyłączony", co wyłącza automatyczne uzupełnianie Chrome - camiblanch


Odpowiedzi:


Może to być błąd w Google Chrome, nie możesz oszukiwać, stwórz ukryty wpis. Funkcja automatycznego uzupełniania otrzyma pierwszy tekst wejściowy do wypełnienia danych.

<form autocomplete="off" id="search_form" method="post" action="">
    <input type="text" style="display:none" />
    <input autocomplete="off" type="text" />
</form>

6
2018-06-12 08:04



Ten hack już nie działa, tak jak w Chrome 34 - Keith
Możesz także ustawić autouzupełnianie na losowy ciąg znaków, taki jak "noautocomplete" lub coś innego niż "on". Przeglądarka zbudowana jest tak, aby rozpoznawać "wyłączone", ale nie losowe ciągi. Spowoduje to wyłączenie autouzupełniania przeglądarki - camiblanch


Wynika to z decyzji projektowej podjętej przez Chrome (prawdopodobnie każdy użytkownik Chrome) chce to zachowanie).

Powodem tego jest to, co Google wzywa priorytet okręgów wyborczych:

  1. Użytkownik jest królem! To, czego chcą, ma znaczenie większość.
  2. Użytkownik chce użyć hasła lub menedżera autouzupełniania.
  3. Aplikacja WWW twierdzi, że nie chce zapisywać wartości formularza.
  4. Wybór użytkownika jest ważniejszy, więc wartości formularzy są zachowane.

Są sposoby na obejście, ale jest wysoce prawdopodobne, że zostaną one poprawione w przyszłych wersjach Chrome, ponieważ programiści Chrome uważają ich zachowanie za poprawne, a obejście za błąd.

Nawet wtedy, gdy obejście problemu działa, powoduje to dezorientujące zachowanie użytkownika - oczekują one, że autouzupełnianie będzie działać zgodnie z ich ustawieniami.

Wielu użytkowników zdecydowało się już ignorować ustawienia autouzupełniania aplikacji za pomocą wtyczek lub skryptów, które po prostu usuwają na stronie autocomplete = off - i tak już mieli taki wybór.

Najlepiej planujesz projektowanie z założeniem, że autouzupełnianie może działać i uwzględnia to.

Osobiście nienawidzę tego, gdy witryny nie pamiętają mojego hasła i zastępują te, które robią z rozszerzeniami przeglądarki. Jednak tworzę także aplikacje do mojej pracy i tam przypominanie haseł jest postrzegane jako zagrożenie bezpieczeństwa, ponieważ użytkownik może pozostawić swój komputer odblokowany. Moim osobistym zdaniem użytkownicy nie blokujący swoich komputerów są problemem dla lokalnego IT, a nie dla aplikacji, a lokalny IT może wyłączyć autouzupełnianie wszystkich haseł dla wszystkich aplikacji internetowych, jeśli ich użytkownicy nie mogą być zaufani.

Niestety, aby przejść testy bezpieczeństwa, niektóre aplikacje muszą jeszcze wyłączyć autouzupełnianie, są sposoby, aby to zrobić, ale wszystkie są okropne. Pierwszym włamaniem jest wprowadzenie nowego hasła do hasła:

<input type="hidden" name="password" id="realPassword" />
<input type="password" name="{randomly generated}" 
    onchange="$('#realPassword ').val($(this).val())" />

Użyłem jQuery i podkreśliłem wszystko, aby uprościć, ale to powinno dać ci pojęcie o hacku - żadna wtyczka ani przeglądarka nie może automatycznie wypełnić danych wejściowych zupełnie nową nazwą.

To rozwiązanie zostanie zerwane, jeśli odpowiednio zbudujesz ARIA i etykiety (dzięki temu wyszukiwarka / rozszerzenie może znaleźć i automatycznie wypełnić dane wejściowe z etykiety).

Zatem opcja 2, także okropna, polega na odczekaniu, aż autouzupełnianie wystrzeli, a następnie wygaszy pole:

<input type="text" name="username" 
    onchange="window.setTimeout(function() { 
        $('#password').val('') 
    }, 100)" />
<input type="password" id="password" />

Tak jak powiedziałem, nieprzyjemnie.


6
2017-07-22 10:10



WYKORZYSTANIE PRZYPADKU: Posiadam kasę internetową w sklepie internetowym. Mam wielu pracowników korzystających z tej aplikacji internetowej. W żaden sposób nie chcę menedżera haseł, ponieważ MOJE hasło administratora będzie przechowywane, a użytkownicy inni niż administratorzy będą mogli łatwiej uzyskać do nich dostęp. - Blair Anderson
@BlairAnderson tak - więc chcesz, aby autouzupełnianie zawsze było wyłączone dla tego komputera. Włącz go na komputerze osobistym, wyłączonym dla współdzielonego - w obu przypadkach czy autouzupełnianie jest wyborem lokalnej przeglądarki, a nie aplikacji. - Keith
Tyle pochmurnych słów - czy ktoś nie wyjaśnia, dlaczego jest to zła odpowiedź przed głosowaniem? - Keith
Dziękujemy za uratowanie dnia! nic nie działało, a twoje rozwiązanie po prostu to zrobiło. - Display Name


Wydaje się, że jest to powracający problem w Google Chrome, mimo że dodaliśmy funkcję autouzupełniania do formularza zrobił pracować w mojej kompilacji. Może w nowszych wersjach już nie.

To jest hack. Podaj swój identyfikator wejściowy, powiedz foo, a także w JavaScript:

if (navigator.userAgent.toLowerCase().indexOf('chrome') >= 0) {
    setTimeout(function () {
        document.getElementById('foo').autocomplete = 'off';
    }, 1);
}

Sprawdź, czy to działa dla Ciebie. Jedynym minusem jest to, że dla tych, którzy korzystają z Chrome i JavaScript jest wyłączony, pole będzie nadal autouzupełniane.


1
2017-08-19 03:49



Wow, nawet to nie zadziałało. - Chloe


The autocomplete atrybut jest nowy w HTML5.

Ponieważ nie wspomniałeś o DOCTYPEMyślę, że to jedyny możliwy powód. W celu uzyskania dalszych szczegółów sprawdź MDN's Jak wyłączyć autouzupełnianie formularzy.

Spróbuj dodać następujące elementy HTML5 DOCTYPE.

<!DOCTYPE html>

FYI: W niektórych przeglądarkach może być konieczne aktywowanie autocomplete funkcja dla   to zadziała (spójrz w "Preferencje" w menu przeglądarki).

Jesteś używając go we właściwy sposób wspominając autocomplete atrybut pod form element. Jednak nie trzeba go wymieniać oddzielnie input etykietka.

<form autocomplete="off" id="search_form" method="post" action="">
    <input type="text" />
</form>

Aktualizacja: Tutaj znajdziesz listę rozwiązań w atrybut autouzupełniania i dokumenty internetowe za pomocą XHTML.


0
2017-08-19 03:50



Czy mógłbyś przytoczyć źródło tego cytatu? - rink.attendant.6
Po prostu poświęciłem sporo czasu na przeglądanie tej strony i nie zawiera ona tego cytatu; w Google nic nie działo się poza tą stroną. - rink.attendant.6
@ rink.attendant.6 Cytat jest używany od w3schools.com/tags/att_input_autocomplete.asp. MDN jest powszechnie akceptowany, podczas gdy W3Schools nie jest. - Praveen
Chociaż niektóre z odpowiedzi na to pytanie mogły zadziałać w przeszłości, obecnie jednym ze sposobów zapobieżenia pojawieniu się w przeglądarce menedżera haseł jest posiadanie co najmniej dwóch oddzielnych dodatkowych ukrytych haseł wejściowych, z których każdy ma różne fałszywe wartości, jak na przykład: stackoverflow.com/a/41882977/5150013 - code4kix


jeśli używasz wywołania AJAX do przesyłania danych do backendu. Po zakończeniu wywołania AJAX, pola hasła powinny być jasne. Następnie monit o zapisanie hasła nie zostanie wyświetlony.

Na przykład: $ (# foo) .val ("");


0
2018-05-23 04:27





spróbuj tego, pracował dla mnie po tym, jak trochę pogubiłeś się

if ( navigator.userAgent.toLowerCase().indexOf('chrome') >= 0 ) {
    $('input[autocomplete="off"]').each( function(){
        var type = $(this).attr( 'type');
        $(this).attr( 'type', '_' + type );
        $(this).attr( 'type', type );
    });
}

0
2018-06-02 12:54