1

当用户在某些网站上创建帐户时,有时需要用户的基本信息,例如姓名、电子邮件和位置。如果用户之前输入了他/她的信息,Chrome 可以自动填写此表单。

我的问题是:是否可以检测/识别用户正在访问的页面是否可以自动填充?

一个天真的解决方案是解析每个页面以查找可以自动填充的表单。但是有更优雅的解决方案吗?

4

3 回答 3

1

好吧,您可以检查默认值value="VALUE"是否已更改,即:

if (getElementById('inputID').value != 'VALUE') { // DO SOMETHING }

或者

检查值是否已更改:

input type="text" onchange="alert('changed')">

这两个之一应该可以帮助你(我希望:))

于 2011-08-22T22:52:53.190 回答
1

你到底想要什么?显然,每个表格都可以自动填写,因此您的文本中的问题的答案是肯定的。

您标题中的问题是一个非常不同的问题 - 表格是否已自动填写?

有一个很好的近似值:如果您在加载时检查表单中是否有任何值(与您发送的值不同),并且存在,显然用户不能手动填写它们。那么你就知道自动填充已经发生了。

另一方面,听起来好像您不是在为自己的网站寻找通用解决方案,而是为您自己想要编写的浏览器扩展程序寻找通用解决方案?在这种情况下,解决方案是相同的,但在页面加载时立即查看页面提供的值并查看实际存在的值是否不同。我不确定,但是 onload 事件应该没问题,我认为在页面加载之前不会发生自动填充。也许您甚至需要在 onload 事件之上添加几百毫秒。用户不能在一秒钟内输入太多内容,或者选择复选框等,所以它仍然是一个很好的猜测。

无论如何,即使在重新阅读你的标题和你的问题之后,我实际上对你想要达到的目标更加困惑 - 但由于道格拉斯亚当斯不是第一个试图教我们的人,通常这不是答案而是问题本身就是问题:)

于 2011-08-22T22:27:14.233 回答
0

你可以使用

document.querySelectorAll('*:-webkit-autofill');

让所有元素自动填充。

然后你只需要检查循环中是否有任何新元素。

于 2012-03-14T14:04:49.173 回答