【发布时间】:2013-11-25 08:27:17
【问题描述】:
在我的网站上,我的一些 Javascript 已经运行了一年多,并且运行良好(据我所知,我为它在每个浏览器中都能正常工作而感到自豪)。但是最近它突然坏了,经过一些调试我发现了这个。
我有一些创建 eventHandler 的代码如下:
window.addEventListener(
'devicemotion',
function (e) { ... },
false
);
此处理程序用于处理设备加速,但由于某种原因,在最近的一些 Chrome 更新中,此处理程序在我的所有计算机(笔记本电脑、台式机等)上被调用,而不仅仅是我的移动设备。据我所知,这些设备中都没有任何加速度计,并且过去从未在它们上执行过此处理程序。
谁能解释一下为什么这种行为发生了变化?在台式计算机上调用此处理程序似乎非常违反直觉。我尝试在 Chrome 中搜索与此相关的更新,但我不太熟悉搜索 Chrome 或 Chromium 存储库/源代码。
【问题讨论】:
-
你从哪个chrome版本更新到了?
-
老实说,我不确定哪个版本的 chrome 破坏了它,因为更新是自动发生的,而且我可能有一两个星期没有检查我的网站。现在我正在运行版本 31.0.1650.57 m。此外,
window.ondevicemotion似乎是null,或者至少这是 Chrome 控制台告诉我的。 -
您的第二个参考使我遇到了问题。事实上,一个带有空值的事件会被发送一次(即
acceleration = {null, null, null}),显然是为了让开发人员能够处理不支持此加速数据的设备。随意写一个答案,我会给你一些功劳。
标签: javascript google-chrome event-handling dom-events