首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无缘无故调用keyup和keydown事件

无缘无故调用keyup和keydown事件
EN

Stack Overflow用户
提问于 2017-12-23 23:24:03
回答 1查看 135关注 0票数 0

我有一个基于jQuery的单页面应用程序和很多jquery插件,比如jquery-address和jqueryvalidation。

此应用程序使用隐藏和显示div来提供单页面应用程序功能

在页面之间移动并在应用程序上工作了一段时间后,我从chrome where keyup和keydown事件中获得了这种奇怪的行为,在应用程序中的每一个输入上都会自动触发keydown事件,其中输入的包装器具有css display:none属性。

这个错误不会在每台机器上重现,而且如果我在不同的服务器上安装应用程序,也不会在所有服务器上都发生。

如果我在同一台机器上使用匿名模式,它将不会在匿名模式下重现,而清除缓存和在主窗口上硬重新加载也不能解决这个问题

我删除了我们拥有的所有JavaScript代码,只保留了单个html表单和j查询库,并使用控制台成功执行了一次ajax调用,这些事件仍然在表单中仅有的两个隐藏输入上调用,而如果我使表单可见,则不会调用任何内容!!

最终的源代码

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div style="display: none">
    <input id="username" name="username" type="username">
    <input id="password" name="password" type="password">
</div>
<script src="./js/lib/jquery-1.11.1.min.js"></script>
</body>
</html>

这里是控制台的屏幕截图,您可以看到我只运行了monitorEvents($("body"));$.getJSON("http://localhost:3000");并触发了事件

我找不到为什么触发这些事件,也不知道它们为什么有isTrusted: true,它们也没有key属性或keyCode或任何属性来告诉您正在按下/模拟哪个键

顺便说一句:我没有在浏览器中安装任何扩展/插件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-24 21:06:16

经过超过5天的工作后,我发现了这种行为的原因,似乎是如果我们提交一个带有密码的表单,然后允许chrome保存密码,并且只有当我们在页面中隐藏密码输入时,如果我们将事件处理程序附加到该输入,那么chrome将调用隐藏输入上的所有事件

我已经向chromium project报告了这个bug。

https://bugs.chromium.org/p/chromium/issues/detail?id=797530

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47953666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档