无理由调用keyup和keydown事件

时间:2017-12-23 15:24:03

标签: javascript jquery html google-chrome

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

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

在页面之间移动和处理应用程序一段时间后,我从chrome得到了这个奇怪的行为,其中keyup和keydown事件在应用程序中的每个输入上自动触发,其中输入的包装器具有css显示:没有财产。

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

并且为了让这个bug更加有线,如果我在同一台机器上使用隐身模式,它将无法在隐身模式下重现,同时清除缓存并在主窗口上重新加载将无法解决问题

我删除了所有的JavaScript代码,只保留了单个html表单和j查询库,并使用控制台进行了成功的ajax调用,这些事件仍调用我在表单中只有两个隐藏的输入,而If我没有调用任何形式的表单!

最终源代码

<!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($(&#34;主体&#34;)[0]); $ .getJSON(&#34; http://localhost:3000&#34); 并解雇了事件

我无法找到为什么会触发这些事件,而且我不知道为什么他们有isTrusted:true,他们也没有key属性或keyCode或任何属性来告诉你什么键被压/模拟

BTW:我没有在浏览器中安装任何扩展程序/插件

enter image description here

1 个答案:

答案 0 :(得分:0)

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

我已经向Chrome项目报告了这个错误

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

相关问题