我最近几次偶然发现此问题,Chrome忽略了autocomplete="false"
和autocomplete="off"
。现在,如果有人之前提交过带有随机“ hack”的表格,它甚至会忽略autocomplete="whatever"
或您用来欺骗它的任何操作。
在尝试解决此问题时,我碰到了this StackOverflow question,如果您之前提交了包含此字段的表单,这并不能解决问题。
编辑:这不是密码字段。
是,我在这里回答自己的问题,因为我认为我的解决方案将帮助其他分享我问题的人。答案如下:
答案?动态更改页面加载时的name
和autocomplete
值。无论使用什么,都可以通过PHP,JS来完成。就我而言,我在PHP中通过向name
和autocomplete
值添加时间戳(以秒为单位)来完成此操作:
<input type="text" id="example" name="whatever<?php echo time(); ?>" autocomplete="whatever<?php echo time(); ?>">
将变为:
<input type="text" id="example" name="whatever1525376494" autocomplete="whatever1525376494">
这将确保Chrome不会在每次加载新页面时自动建议用户。
就我而言,这还不够,因为我多次提交了相同的表单而没有重新加载页面,并且大多数用户都将这样做。这意味着每次提交表单后,我都必须更改名称和自动完成值。
为了解决这个问题,我添加了这部分JS来解决它。每隔2.5秒,它会在这些值的末尾添加一个增量整数,以覆盖该整数。
if ($('#example').length) {
var dynamicName = $('#example').attr('name');
var dynamicCounter = 0;
setInterval(function(){
var dynamicVal = dynamicName + dynamicCounter;
$('#example').attr('autocomplete', dynamicVal).attr('name', dynamicVal);
dynamicCounter += 1;
}, 2500);
}
希望有帮助!