一尘不染

JavaScript检测浏览器自动填充

javascript

您如何判断浏览器是否自动填充了文本框?尤其是用户名和密码框可自动填充页面加载。

我的第一个问题是页面加载序列何时发生?是在document.ready之前还是之后?

其次,我该如何使用逻辑找出这种情况是否发生?它不是我想阻止这种情况发生,只是挂接到事件中。最好是这样的:

if (autoFilled == true) {

} else {

}

如果可能的话,我希望看到一个jsfiddle显示您的答案。


阅读 876

收藏
2020-04-25

共1个答案

一尘不染

问题是自动填充由不同的浏览器处理。有些派遣变更事件,有些则没有。因此,几乎不可能挂接在浏览器自动完成输入字段时触发的事件。

  • 更改不同浏览器的事件触发器:

    • 对于用户名/密码字段:

    • Firefox 4,IE 7和IE 8不会调度change事件。

    • Safari 5和Chrome 9确实会调度更改事件。
    • 对于其他表单字段:

    • IE 7和IE 8不会调度change事件。

    • 当用户从建议列表中选择一个值并跳出字段时,Firefox 4确实调度了更改更改事件。
    • Chrome 9不会调度更改事件。
    • Safari 5确实调度了change事件。

最好的选择是禁用在表单中使用autocomplete="off"的表单的自动完成功能,或者定期轮询以查看其是否已填写。

关于您是否在文档上填充文档或文档之前的问题,请再次阅读,不同的浏览器甚至不同的版本都有不同。对于用户名/密码字段,仅当您选择用户名时才填写密码字段。因此,如果您尝试附加到任何事件,那么总共会有一个非常混乱的代码。

2020-04-25