How to turn off form autocompletion
В этой статье объясняется как можно отключить автозаполнение полей на сайте.
Эти функции обычно включены по умолчанию, но они могут вызвать проблемы конфиденциальности пользователей, поэтому браузеры могут позволить отключать их. Однако некоторые данные, представленные в формах, либо не будут полезны в будущем (например, одноразовый пин-код), либо содержат конфиденциальную информацию (например, уникальный правительственный идентификатор или код безопасности кредитной карты). Как автор сайта, вы можете предпочесть, чтобы браузер не запоминал значения для таких полей, даже если в браузере включена функция автозаполнения.
It is important to know that if you turn off autocomplete, you are breaking the rule 1.3.5: Identify Input Purpose in WCAG 2.1. If you are making a website that should follow WCAG, you should use autocomplete with autofill.
Disabling autocompletion
To disable autocompletion in forms, you can set the autocomplete (en-US) attribute to «off»:
You can do this either for an entire form, or for specific input elements in a form:
form method="post" action="/form" autocomplete="off">[…]form>
form method="post" action="/form"> […] div> label for="cc">Credit card:label> input type="text" id="cc" name="cc" autocomplete="off" /> div> form>
Setting autocomplete=»off» on fields has two effects:
- It tells the browser not to save data inputted by the user for later autocompletion on similar forms, though heuristics for complying vary by browser.
- It stops the browser from caching form data in the session history. When form data is cached in session history, the information filled in by the user is shown in the case where the user has submitted the form and clicked the Back button to go back to the original form page.
If a browser keeps on making suggestions even after setting autocomplete to off, then you have to change the name attribute of the input element.
The autocomplete attribute and login fields
Modern browsers implement integrated password management: when the user enters a username and password for a site, the browser offers to remember it for the user. When the user visits the site again, the browser autofills the login fields with the stored values.
Additionally, the browser enables the user to choose a master password that the browser will use to encrypt stored login details.
Even without a master password, in-browser password management is generally seen as a net gain for security. Since users do not have to remember passwords that the browser stores for them, they are able to choose stronger passwords than they would otherwise.
For this reason, many modern browsers do not support autocomplete=»off» for login fields:
- If a site sets autocomplete=»off» for a , and the form includes username and password input fields, then the browser still offers to remember this login, and if the user agrees, the browser will autofill those fields the next time the user visits the page.
- If a site sets autocomplete=»off» for username and password fields, then the browser still offers to remember this login, and if the user agrees, the browser will autofill those fields the next time the user visits the page.
This is the behavior in Firefox (since version 38), Google Chrome (since 34), and Internet Explorer (since version 11).
Preventing autofilling with autocomplete=»new-password»
If you are defining a user management page where a user can specify a new password for another person, and therefore you want to prevent autofilling of password fields, you can use autocomplete=»new-password» .
This is a hint, which browsers are not required to comply with. However modern browsers have stopped autofilling elements with autocomplete=»new-password» for this very reason. For example, Firefox version 67 (see Firefox bug 1119063) stopped autofilling in this case; however, Firefox 70 (see Firefox bug 1565407) can suggest securely-generated passwords, but does not autofill a saved password. See the autocomplete compat table (en-US) for more details.
Tools for disabling autocompletion
The jquery.disableAutoFill plugin randomizes an input’s name attribute by default. When the form is submitted, the plugin restores the original name. This prevents auto-completion for all browsers (includes third-party auto-completion extensions) but doesn’t necessarily help with login fields.
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 27 нояб. 2023 г. by MDN contributors.
Как отключить подсказки VS Code?
Уже приноровился использовать в верстке сокращения Emmet в VS Code, но столкнулся с проблемой, если отключить подсказки «Suggestions» совсем — аббревиатуры emmet также перестают разворачиваться.
Как отключить всплывающие подсказки для html, sass и css, но при этом оставить возможность использовать аббревиатуры emmet?
- Вопрос задан более трёх лет назад
- 6168 просмотров
2 комментария
Простой 2 комментария
Как убрать всплывающие подсказки в VSCode?

Как отключить именно этот вид подсказок?
Отключал все подсказки командой editor.hover.enabled: false , но тогда при наведении нет абсолютно никаких подсказок , и это не удобно , например когда нужно поменять цвет и ты наводишь курсор на код с цветом и нет всплывающего окна.
- Вопрос задан более трёх лет назад
- 4749 просмотров
3 комментария
Простой 3 комментария

Проверь, может эти подсказки отключаются в настройках расширения, которое ты поставил (для работы с CSS, может быть)

Megalexandros @Megalexandros Автор вопроса
Игорь Борисов, Нет таких расширений.
Игорь Борисов, в моём случае дело было как раз в расширении, а все строчки в settings.json не помогали.
Дело было в расширении «Python». Если что, отключаем все расширения и смотрим. Когда нашли, заходим на его локальную страницу в vs code и нажимаем значок шестерёнки рядом с кнопками «отключить» и «удалить. Открываем параметры и вверху, в поиске вводим «hover». Ищем «Editor > Hover: enabled — управлять тем, отображается ли наведение». Снимаем галочку. Это только в моём случае, но метод ясен.
Решения вопроса 1
Вашу проблему можно решить двумя способами.
1. Увеличить время паузы, после которой появляется всплывающая подсказка. Отвечает за это параметр:
«editor.quickSuggestionsDelay»: 1000,
2. Отключить автоматическое появление подсказки, параметр:
«editor.hover.enabled»: false,
Для того чтоб подсказка появилась, потребуется нажать (Ctrl + K и Ctrl + I).
Добавлять их нужно в файл настроек.
%APPDATA%\Code\User\settings.json
Лексический синтаксис
Этот раздел описывает синтаксис JavaScript. Исходный код ECMAScript скриптов сканируется слева направо и преобразуется в последовательность найденных элементов в токены, управляющие символы, окончания строк, комментарии или пробелы.
ECMAScript также определяет ключевые слова и литералы и имеет указания для автоматической вставки точек с запятой к концу инструкции.
Спецсимволы
Спецсимволы не имеют визуального представления, однако используются для управления интерпретацией текста.
| Code point | Name | Abbreviation | Description |
|---|---|---|---|
| U+200C | Zero width non-joiner | Размещается между символами во избежание их соединений в лигатуры для некоторых языков (Wikipedia) | |
| U+200D | Zero width joiner | Размещается между символами, которые не могли бы нормально объединиться для того, чтобы символы отрисовывались, используя их соединительную форму в некоторых языках (Wikipedia) | |
| U+FEFF | Byte order mark | Используется вначале скрипта для того, чтобы пометить Юникод и порядок байтов (Wikipedia) |
Пробелы
Пробельные символы улучшают читабельность исходного текста и разделяет токены друг от друга. Пробельные символы обычно не обязательны для функционирования кода. Утилиты для уменьшения объёма кода часто удаляют пробельные символы, чтобы уменьшить объем кода.
| Code point | Name | Abbreviation | Description | Escape sequence |
|---|---|---|---|---|
| U+0009 | Character tabulation | Горизонтальная табуляция | \t | |
| U+000B | Line tabulation | Вертикальная табуляция | \v | |
| U+000C | Form feed | Символ контроля разрыва страницы (Wikipedia) | \f | |
| U+0020 | Space | Обычный пробел | ||
| U+00A0 | No-break space | Обычный пробел без точки, на которой может произойти разрыв страницы | ||
| Others | Other Unicode space characters | Другие символы в Юникоде на Википедии |
Окончание строк
В дополнение к пробельным символам, символы окончания строк тоже используются для читабельности исходного кода. Однако, в некоторых случаях, символы окончания строк могут влиять на выполнение JavaScript-кода, т.к. есть некоторые места, где они запрещены.
Окончания строк также затрагивают процесс автоматического проставления точки с запятой. Также окончания строк попадают под условия регулярных выражений при поиске \s класса.
В ECMAScript, в качестве окончания строк можно использовать только ниже перечисленные Юникод символы. Другие символы окончания строк будут интерпретированы, как пробельные символы (например, Next Line, NEL, U+0085 будут интерпретироваться, как пробельные символы).
| Code point | Name | Abbreviation | Description | Escape sequence |
|---|---|---|---|---|
| U+000A | Line Feed | Новая строка в UNIX системах. | \n | |
| U+000D | Carriage Return | Новая строка в Commodore и ранних Mac systems. | \r | |
| U+2028 | Line Separator | Wikipedia | ||
| U+2029 | Paragraph Separator | Wikipedia |
Комментарии
Комментарии используются для добавления подсказок, заметок, предложений или предупреждений. Они могут упростить чтение и понимание кода. Также они могут быть использованы для предотвращения выполнения кода (этот приём практикуется при отладке кода).
В JavaScript есть несколько способов указать комментарии в коде.
Первый способ // комментарий; в этом случае весь текст в строке после двойного слеша будет комментарием, например:
function comment() // Это комментарий в строке console.log("Hello world!"); > comment();
Второй способ — это /* */ , такой способ более гибок, чем первый.
Например, вы можете использовать его в одной строке:
function comment() /* Это однострочный комментарий */ console.log("Hello world!"); > comment();
Либо вы можете сделать многострочный комментарий, как показано здесь:
function comment() /* Этот комментарий располагается на нескольких линиях. Обратите внимание, что вам не нужно обрывать комментарий, пока вы его не закончите*/ console.log("Hello world!"); > comment();
Также, если пожелаете, то вы можете использовать такое комментирование посреди строки кода. Хотя это может ухудшить читабельность кода:
function comment(x) console.log("Hello " + x /* вставьте значение x */ + " !"); > comment("world");
Чтобы отключить выполнение кода, просто оберните код в комментарий, как здесь:
function comment() /* console.log("Hello world!"); */ > comment();
В этом случае console.log() никогда не выполнится, пока он внутри комментария. Таким способом можно отключить любое количество строк кода.
Шебанг комментарии
Третий специализированный синтаксис комментариев, шебанг комментарий, в процессе стандартизации в ECMAScript (смотреть Hashbang Grammar proposal).
Шебанг комментарий ведёт себя точно также как и однострочный ( // ) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #! . Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешён.
Шебанг комментарий определяет путь к JavaScript интерпретатору, скрипт которого вы хотите выполнить. Пример, как это работает:
#!/usr/bin/env node console.log("Hello world");
Примечание: Hashbang comments in JavaScript mimic shebangs in Unix used to run files with proper interpreter.
Предупреждение: Although BOM before hashbang comment will work in a browser it is not advised to use BOM in a script with hasbang. BOM will not work when you try to run the script in Unix/Linux. So use UTF-8 without BOM if you want to run scripts directly from shell.
Для определения JavaScript интерпретатора используйте только #! . В любых других случаях используйте // (или многострочный комментарий).
Ключевые слова
Зарезервированные ключевые слова в ECMAScript 2015
Ключевые слова, зарезервированные на будущее
Следующие ключевые слова зарезервированы на будущее ECMAScript спецификацией. За ними сейчас не стоит никакой функциональности, но она может появиться в будущих версиях, поэтому эти ключевые слова не могут быть использованы, как идентификаторы. Эти ключевые слова не могут быть использованы даже в strict или non-strict режимах.
Следующие ключевые слова зарезервированы для кода, который выполняется в strict режиме:
- implements
- package
- protected
- static
- interface
- private
- public
Зарезервированные ключевые слова в более старых версиях
Перечисленные ниже ключевые слова зарезервированы для старых версий ECMAScript спецификаций (ECMAScript от 1 по 3).
- abstract
- boolean
- byte
- char
- double
- final
- float
- goto
- int
- long
- native
- short
- synchronized
- transient
- volatile
К тому же, литералы null , true , и false зарезервированы в ECMAScript для их обычной функциональности.
Использование зарезервированных слов
Зарезервированные слова действительно применяются только к идентификаторам (vs. IdentifierNames). Как описано в es5.github.com/#A.1, это все имена IdentifierNames, которые не исключают зарезервированных слов.
.import a["import"] a = import: "test" >.
С другой стороны, следующее выражение неправильно, т.к. Идентификатор IdentifierName не содержит зарезервированных слов. Идентификаторы используются для FunctionDeclaration, FunctionExpression, VariableDeclaration и т.п., в то время, как IdentifierNames используются для MemberExpression, CallExpression и т.п.
function import() > // неправильно.