如何在网页源代码中关闭 Safari 自动填充

How to turn off Safari autofill in webpage source

我有一个可以动态添加 terms/rows 的高级搜索表单。我注意到当您单击文本字段时,表单越大,表单越慢。有时,您单击文本字段并在中等大小的表单上等待大约 2 秒钟,然后才会显示任何类型的内容。

只有在文本字段最初为空时才会发生 - 并且仅在 Safari 中。

我发现如果我进入 Safari 偏好设置,转到“自动填充”选项卡,然后关闭所有“自动填充 Web 表单”复选框,表单会很快速 - 没有延迟。显然,Safari 正试图弄清楚如何建议输入内容,例如我的名片信息、用户名和密码、信用卡等...

此高级搜索表单似乎与其中任何一个都不相关(除非它跟踪重复输入的搜索词...?)。所以这是我的问题:

  1. 有没有办法告诉 Safari 不寻找自动填充的可能性,这样我的表单在 Safari 中就不会出现这种延迟?
  2. 如果 #1 不是一个选项,有没有办法让 Safari 的建议更有效 - 这样它就可以更快地找出没有什么可建议的?

关于#2,我的文本字段没有标签。 “标签”是在前面的 select 列表中选择的值。这是一个例子:

请注意,在 1-2 秒延迟后,字段中会出现自动填充图标:

添加隐藏标签可以提高 Safari 的自动填充功能的效率吗?

我尝试并失败了我在堆栈上找到的各种“解决方案”:

  • 在表单和输入元素中设置属性 autocomplete="off"
  • 在输入标签的上方和下方添加了隐藏标签
  • 添加了一个 class 提示输入字段类型的名称
  • 尝试了 javascript solution

None 他们成功了。我在单击字段和能够输入文本之间仍然遇到了延迟 - 并且用户图标仍然显示 phone 来自我的名片的号码建议。

我读了一本旧书,但在其他方面很有帮助 article about how to coax autofill to fill in the correct information。它没有提到我偶然发现的解决方案,但它激发了我尝试它的灵感......

我在 Django 表单中的文本输入中添加了一个占位符属性 class:

    val = forms.CharField(widget=forms.TextInput(attrs={"placeholder": "search term"}))

做到了!现在,当我点击一个搜索词字段时(它现在以浅灰色显示“搜索词”——我勉强同意),我可以立即输入文本,并且不会出现自动填充图标!: