javascript - 为什么我的 JavaScript 事件在任何输入上执行,而不是输入到 Chrome 中的适当字段?

标签 javascript html

我有一个事件要在输入字段中按下时执行。它在 Firefox 中做的一样多。但是,在 chrome 中,当我向页面提供任何输入(单击、按下等)时,它会执行事件(重定向)。我似乎无法弄清楚为什么。有任何想法吗?

这是javascript:

var yum = document.getElementById("username");
var form = document.querySelector("div.resp-wrapper form[name='register']");
form.setAttribute("autocomplete", "off");
yum.addEventListener("keydown", function handler() {
    window.location.href = "https://giphy.com/gifs/troll-you-mad-face-eVy46EWyclTIA";
    this.removeEventListener("keydown", handler);
});

这是我正在处理的页面 [链接已删除];您可以在现场看到问题。我最终会删除此链接。

哦,我想我应该提一下这是一个不可见的表单字段(这是一个蜜 jar )。它位于验证码和最后一个可见的表单字段之间。您可以通过单击该字段所在的位置并按任意键来运行测试。

更新:我可以在我的 Windows 机器上重现; chrome 版本 74.0.3729.131(官方构建)(64 位)。在我的 android 上,行为也相同(触摸页面上的任何地方都会重定向我)- 版本 74.0.3729.136。但无法在我的 Mac chrome 版本 71.0.3578.98 上重现。

最佳答案

想通了;而且,当然,这是愚蠢的。我从表单字段中删除了 CSS,并意识到,即使我多次清除了缓存和浏览器历史记录,也没有阻止 Chrome 的自动填充功能每次都填充该字段。

当我删除 CSS 时,我可以看到每当我访问该页面时该字段总是被填充。 Chrome 一直在填写我的电子邮件地址(奇怪的是,考虑到它不是电子邮件字段)。我清除了我的 Chrome 自动填充设置,现在代码可以按预期工作。不幸的是 autocomplete="off"属性并不能阻止这种情况。我读到通常此属性没有实际意义,因为 browser will override it anyway .

关于javascript - 为什么我的 JavaScript 事件在任何输入上执行,而不是输入到 Chrome 中的适当字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56068379/

相关文章:

javascript - 从 dom 到 jquery 的函数

jquery - 如何处理可点击区域顶部的元素

javascript - IntroJS 条件步骤

javascript - 使用 CSS 的表格列样式

html - 连一个简单的下拉菜单都做不出来

javascript - "Uncaught ReferenceError: vue is not defined"

javascript - 如果在点击事件期间禁用链接,IE9 将不会执行链接的默认操作

javascript - 如何使用 Angular 1.x 服务从一个组件更新另一个组件?

javascript - 捕获用户点击: InDesign scripting

javascript - Three.js - 更新纹理