Подтвердить что ты не робот

Как скрыть значок сафари автозаполнения в поле ввода

В каждом из полей ввода есть значок маленького человека со стрелкой в ​​сафари. Как я могу отключить это? Кстати, у меня есть другая подобная страница, и это не происходит. Я попытался отключить все стили в веб-инспекторе, и на одной странице все еще есть значок. Поэтому я не знаю, css или html.

4b9b3361

Ответ 1

Если вы хотите полностью скрыть его, вы можете использовать следующие трюки css. В основном он обнаруживает, что "контакты-автозаполнение-кнопка" и удаляет его из поля ввода. Убедитесь, что у вас есть "absolute: position", чтобы избежать дополнительных дополнений из ваших полей.

input::-webkit-contacts-auto-fill-button {
  visibility: hidden;
  display: none !important;
  pointer-events: none;
  position: absolute;
  right: 0;
}

Ответ 2

Вам не нужно отменять все свойства кнопок автозаполнения.

Чтобы скрыть значки Safari в целом, вы также можете просто скрыть свою оболочку.

Поскольку значки являются Теневым контентом, DOM не покажет его, но теневая DOM. Просто включите кнопку "< > " в инспекторе.

Здесь вы найдете контейнер для упаковки, на который вы можете настроить css следующим образом:

input::-webkit-textfield-decoration-container {
  display: none; /* or whatever styling you want */
}

Внутри вы найдете брелок для пароля и индикатор блокировки крышки:

input::-webkit-caps-lock-indicator {
}

input::-webkit-credentials-auto-fill-button {
}

О, и пока вы на нем, не забудьте IE с его ясными кнопками и значками для глаз пароля:

input::-ms-clear {
}

input::-ms-reveal {
}

Ответ 3

Скрыть значок автозаполнения Safari в поле пароля input:

::-webkit-credentials-auto-fill-button {
    visibility: hidden;
    pointer-events: none;
    position: absolute;
    right: 0;
}

Ответ 4

Связано: Я хотел отрегулировать положение значка ключа для input[type="password"], но не смог найти селектор псевдоэлементов в любом месте.

Итак, я клонировал источник webkit и смог найти его:)

input::-webkit-credentials-auto-fill-button

Ответ 5

Обратите внимание: проверьте метки полей и любые значения атрибутов placeholder, поскольку они также могут привести к появлению всплывающих окон автозаполнения, несмотря на то, что правила стиля CSS применяются в обратном порядке.

Подробнее см. ниже...


Следует отметить, что в Safari (по крайней мере, версия 11+ и, вероятно, более ранние версии, а также в других последних браузерах, например Chrome, Firefox и т.д.), Даже если существуют различные обходные пути CSS для скрытия всплывающих окон автозаполнения, если это поле является именем пользователя или паролем для браузера, то поле автозаполнения по-прежнему отображается.

Я обнаружил, что браузер не только проверяет атрибут тега <input> name для таких ключевых слов, как username, login и аналогичных вариантов, но также, по-видимому, учитывает содержимое любого текста атрибута placeholder в поле и, что самое удивительное, любой текст, смежный с полем <input>, например, используемый в качестве метки поля формы. Текст метки не обязательно должен быть помещен в тег <label>, чтобы иметь этот эффект - просто чтобы быть в непосредственной близости от поля, хотя у меня не было возможности всесторонне протестировать и определить, что считается "близкой близостью" - это потребует дальнейших исследований и экспериментов или, где это возможно, анализа исходного кода различных механизмов рендеринга в веб-браузерах, например, для WebKit.

Таким образом, если у вас есть ключевые слова word, такие как username, user name, login или аналогичные варианты, а также варианты для password, браузер покажет всплывающее окно автозаполнения, когда поле сфокусировано, несмотря на любые правила CSS чтобы попытаться скрыть это!

Хотя я не был так удивлен, увидев, что всплывающее окно активируется значениями атрибута <input> name или placeholder, я был удивлен, увидев, что текст метки тоже был сочтен браузером, поэтому мне пришлось изменить формулировка и маркировка полей, чтобы убедиться, что всплывающие окна не появляются. Например, я обнаружил, что изменение текста заполнителя с 'Please enter your username...' на 'Please enter your user-name...' не позволило браузеру распознать поле как поле имени пользователя - также обратите внимание на дефис между словами user и name - без дефиса между словами - всплывающее окно все еще появилось, поэтому оно показывает, как могут исключить случаи, которые проверяют браузеры. Как примечание, я уже модифицировал атрибут field name и смежную маркировку на этом этапе, чтобы удалить ссылки на инициирующие ключевые слова или их варианты.

Ясно, что браузеры проводят интересную проверку страниц, чтобы определить, показывать ли всплывающие окна с именами пользователей и паролями - и хотя это общее поведение, которое помогает пользователям использовать диспетчеры паролей для более безопасной генерации и хранения учетных данных, бывают случаи, когда Вы не хотите, чтобы всплывающее окно автозаполнения появлялось. Существуют варианты использования, например, в интерфейсе администратора, которые позволяют администраторам, например, управлять учетными записями сотрудников персонала - где вы хотите предложить поле для поиска пользователя сотрудника по его имени пользователя. В таких случаях вы не хотите, чтобы всплывающее окно автозаполнения пыталось заполнить поле вашим собственным именем пользователя, а вместо этого позволяло бы вам вводить любое количество имен сотрудников, например. Было бы здорово, если бы один из стандартных флагов autocomplete='off' или будущий вариант могли быть приняты поставщиками браузеров для обеспечения этого чистого контроля поведения автозаполнения или стандартного атрибута CSS, который при применении всегда имел ожидаемый эффект... но увы, в настоящее время это не так.

На данный момент, однако, если вы имеете дело с этой проблемой, убедитесь, что вы также учитываете содержимое любого атрибута placeholder, который вы добавили в любое поле имени пользователя или пароля <input>, а также любой текст в виде метки, который появляется поблизости., Настраивая и экспериментируя со значениями этих меток/атрибутов, вы сможете обойти логику проверки страниц, которую браузеры используют для включения этих автозаполнений.

Как всегда в Интернете, и поскольку некоторые движки рендеринга в браузерах имеют закрытый исходный код, это, вероятно, будет скорее искусством, чем наукой, пока не будет разработан стандарт, обеспечивающий контроль над этой функцией для всех браузеров на всех платформах, и может возникнуть необходимость периодически пересматривать код для проверки его на соответствие новым версиям браузера, чтобы убедиться, что всплывающие окна не появляются вновь из-за измененной логики проверки страниц.

Ответ 6

/img/258ae492c6f5a33083bb796904d3f560.png

Если вы используете поле <input>, не заключая его в тег <form>, Safari 11+ или более поздняя версия покажет вам предложение автозаполнения. Итак, вот что вы можете сделать.

Вариант 1: Убедитесь, что элементы <input> обернуты внутри элемента <form>. Не устанавливайте значение атрибута name в "username" или "login".

Вариант 2: Добавьте атрибут name и установите его значение как "поиск". <input type="text" name="search">

Примечание: Использование autocomplete="off" или autocomplete="false" на <form> и <input> не поможет. Ни одно из следующих свойств CSS не сработает.

input::-webkit-autofill,
input::-webkit-contacts-auto-fill-button,
input::-webkit-credentials-auto-fill-button