Возможно, вы уже знаете, что Safari имеет неприятную ошибку автозаполнения, где он заполняет поля электронной почты, имя пользователя и пароль независимо от того, установлен ли autocomplete="off"
или нет.
Вот базовая форма:
<form action="/" method="post">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" />
</p>
</form>
... Safari автоматически заполняет эти поля при загрузке страницы, как и должно, хорошо выполненная работа!
Если вы поместите autocomplete="off"
в поля и/или элемент формы, Safari все еще сохраняет эти поля:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" autocomplete="off" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" autocomplete="off" />
</p>
</form>
Даже это не работает:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="secretfield1" value="" autocomplete="off"/>
</p>
<p>
<label>Password</label>
<input type="password" name="secretfield2" value="" autocomplete="off" />
</p>
</form>
... так как Safari ищет те элементы <label>
, если они содержат слова "E-mail", "Пароль" и т.д. и идут вперед с автозаполнением.
Aaaahhhhha!, подумал я и попробовал это:
<form action="/" method="post" autocomplete="off">
<p>
<label>%REPLACE_EMAIL_TITLE%</label>
<input type="text" name="%REPLACE_EMAIL_NAME%" value="" autocomplete="off"/>
</p>
<p>
<label>%REPLACE_PASSWORD_TITLE%</label>
<input type="password" name="%REPLACE_PASSWORD_NAME%" value="" autocomplete="off" />
</p>
</form>
... и замените% TAGS% настоящими именами, используя JavaScript. Автозаполнение Safari срабатывает. Независимо от того, установите ли вы 10-секундный тайм-аут на замену.
Итак, это действительно единственный вариант?
<form action="/" method="post" autocomplete="off">
<p>
<label>That electronic postal address we all use, but can't write the title here because Safari fills this with YOUR information if you have autofill turned on</label>
<input type="text" name="someelectronicpostaladdress" value="" autocomplete="off"/>
</p>
<p>
<label>A set of characters, letters, numbers and special characters that is so secret that only you or the user you are changing it for knows, but can't write the title here because Safari sucks</label>
<input type="password" name="setofseeecretcharacters" value="" autocomplete="off" />
</p>
</form>
Надеюсь, что нет?
UPDATE: @skithund указал в Twitter, что Safari получает обновление 4.0.3, в котором упоминается "Автозаполнение входа". Кто-нибудь знает, исправит ли это обновление?