是否可以在不禁用自动完成的情况下禁用Firefox的自动填充功能?
我知道我可以这样做:
autocomplete="off"
Run Code Online (Sandbox Code Playgroud)
但我不想禁用自动完成,只需自动填充.
Firefox填充了一些我们隐藏的字段,这些字段是空的
当用户刷新页面时,这通常是一个问题.表单字段将使用预刷新的值重新填充.这是一个问题的一个例子是老派的占位符.我们使用值填充字段的位置,并在提交时将其删除.该值在刷新时重新填充,我们不知道它是占位符还是使用值.
小智 10
在实际用户名字段和实际密码字段之间放置两个虚拟字段对我有用,例如:
<input name = "Username" type="text" autocomplete="off">
<input name = "DummyUsername" type="text" style="display:none;">
<input name = "DummyPassword" type="password" style="display:none;">
<input name = "Password" type="password" autocomplete="new-password">
Run Code Online (Sandbox Code Playgroud)
这阻止了用户名的自动填充以及密码的自动填充.
autocomplete ="new-password"显然没有完全实现,但可以帮助一些浏览器.我怀疑它对FireFox有帮助,但是如果该功能被更广泛采用,它将用于未来的版本.
如果问题是FF在用户刷新时填充字段,这实际上是Firefox的一个功能,试图在意外刷新的情况下帮助用户,这样他们就不会丢失他们输入的内容.我不认为你可以用HTML覆盖它.您可以使用JavaScript清除/重置页面加载时的所有相关表单值.如果表单上的form.reset()不起作用,则必须遍历表单元素并清除它们,如下所示:
for (i = 0; i < frm_elements.length; i++)
{
field_type = frm_elements[i].type.toLowerCase();
switch (field_type)
{
case "text":
case "password":
case "textarea":
case "hidden":
frm_elements[i].value = "";
break;
case "radio":
case "checkbox":
if (frm_elements[i].checked)
{
frm_elements[i].checked = false;
}
break;
case "select-one":
case "select-multi":
frm_elements[i].selectedIndex = -1;
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20563 次 |
最近记录: |