我很难弄清楚 Firefox 和 Chrome 如何确定密码的字段以及它们如何在其他表单上自动完成它们。
对于我的登录表单,我有这个:
<p>
<label for="login_email">Email:</label><br />
<input id="login_email" name="login[email]" size="30" type="text">
</p>
<p>
<label for="login_password">Password:</label><br />
<input id="login_password" name="login[password]" size="30" type="password">
<input id="login_password_hash" name="login[password_hash]" type="hidden">
</p>
<p>
<input id="login_submit" value="LOGIN" type="submit">
</p>
该login_password_hash
字段用于在使用 Javascript 发送之前在客户端对密码进行哈希处理,禁用 Javascript 不会改变结果。
为了创建一个新用户,我有这个表格:
<p>
<label for="user_email">Email:</label>
<input id="user_email" name="user[email]" size="30" type="text">
</p>
<p>
<label for="user_first_name">First Name:</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text">
</p>
<p>
<label for="user_last_name">Last Name:</label>
<input id="user_last_name" name="user[last_name]" size="30" type="text">
</p>
<p>
<label for="user_password">Password:</label>
<input id="user_password" name="user[password]" size="30" type="password">
<input id="user_password_hash" name="user[password_hash]" type="hidden">
</p>
<p><input id="user_submit" value="Create User" type="submit"></p>
现在从登录表单保存密码并访问新用户表单后,保存的电子邮件将放在密码字段之前的最后一个字段中,并将密码放在密码字段中。
这会在 Firefox 和 Chrome 上发生,但不会在 Internet Explorer 上发生。关于为什么 Firefox 和 Chrome 会有这种行为的任何想法?这两种形式没有任何共同之处,名称和ID都不同。