Javascript 如何防止LastPass(chrome扩展)自动填充输入字段

Javascript 如何防止LastPass(chrome扩展)自动填充输入字段,javascript,html,angularjs,input,lastpass,Javascript,Html,Angularjs,Input,Lastpass,我想阻止LastPass在我的站点上填写输入字段。我使用的是AngularJS和HTML5,扩展自动填充以下输入字段。此字段是我的页面内的搜索字段;这不是一个登录页面 <input id="search-publishers-box" type="text" placeholder="Search Publishers" data-ng-model="publishersSearchQuery.name" class="search-field-text" autocomplete="of

我想阻止LastPass在我的站点上填写输入字段。我使用的是AngularJS和HTML5,扩展自动填充以下输入字段。此字段是我的页面内的搜索字段;这不是一个登录页面

<input id="search-publishers-box" type="text" placeholder="Search Publishers" data-ng-model="publishersSearchQuery.name" class="search-field-text" autocomplete="off"/>

如何防止LastPass自动填充?我尝试更改了
占位符
模型
,添加了
autocomplete=“off”
,并更改了输入字段的
id


没有一个对我有效。

以下是我对此的看法,以及我通常如何解决自动填充问题(是的,它们很模糊,但确实会发生)——我通常会观察字段的变化。由于您使用的是
AngularJS
,因此使用
$watch
非常容易,或者如果您使用的是
jQuery
,只需使用
。更改

然后,每当一次更改多个字符时,您可以假定它是自动填充的,而不是有人在键入

请注意,如果有人决定粘贴到字段中,则此操作将中断

另一个解决方法是仅当按下
键时才允许更改字段

编辑

尝试改用type=“search”。。这是一个无效的类型。。。这将回退到键入文本


将此属性放在您希望不使用LP alter的输入元素中

data-lpignore="true"

对我来说,@nawlbergs先前的回答帮助解决了这个问题。
data lpignore=“true”
不再有用了(可能他们已经更新了逻辑,因为这个解决方案也不再出现在他们的常见问题解答中)

LastPass似乎只使用
type=“text”
type=“password”
的输入来填充密码(这是可以在LastPass条目的表单字段中配置的唯一输入类型)。当您使用其他有效类型(与@nawlbergs建议的不同)但不是
“text”

这就是说,
type=“search”
以及其他可能有效的
type
值都有帮助。只是
type=“search”
具有与
文本类似的行为,可以在任何地方自由使用:

只是出于好奇。。。为什么?因为此字段是我页面中的搜索字段,它不是登录页面,它是一个过滤页面,可以毫无理由地填写登录的用户名并过滤页面表格。我可能只是隐藏登录页面的任何其他输入。| | |不到一分钟的谷歌搜索给了我这个明显的自动完成关闭应该工作,但它需要在用户端的最后一次通过设置中启用。如果我要求最后一次通过自动填充一个站点,那么这就是我想要的。你为什么要这样做?这是一种糟糕的用户体验。我如何知道一次的更改是否超过1次?你能粘贴一个代码示例吗?@LiadLivnat我已经将链接添加到了一个显示该想法的提琴上。我的问题是最后一次将字段更改为相同的-1字符,因此这不是一个完美的解决方案。考虑到第二种解决方法,但它似乎很有效。这是正确的答案,per LastPass文档:这会删除图标,但恐怕不会阻止自动完成。这实际上是一个很好的建议。比按键破解容易得多。这就是我在2019年10月在这里工作的原因,lastpass发布了另一个buggy版本。顺便说一句,
search
对于html5中的
input
不是无效类型。它只是一种在这一点上Lastpass不做任何处理的类型。