在我的网站上,我已经有一些Javascript已经运行了一年多一段时间(并且我为每个浏览器工作而感到自豪,据我所知)。但最近它突然爆发了,经过一些调试我发现了这一点。
我有一些代码可以创建一个eventHandler,如下所示:
window.addEventListener(
'devicemotion',
function (e) { ... },
false
);
此处理程序用于处理设备加速,但由于某些原因,从最近的一些Chrome更新开始,此处理程序将在我的所有计算机(笔记本电脑,台式机等)上调用,而不仅仅是我的移动设备。据我所知,这些设备中没有任何加速度计,过去这个处理程序从未执行过。
有人能否解释为什么这种行为发生了变化?这个处理程序在桌面计算机上调用似乎非常违反直觉。我尝试在Chrome中搜索有关此内容的更新,但我并不熟悉搜索Chrome或Chromium repos /源代码。
答案 0 :(得分:2)
根据r196645谷歌想要修复对Device Orientation API的设备运动部分的支持。
无法提供所有三个角度的实现必须将未知角度的值设置为null。如果提供任何角度,则必须适当设置绝对属性。如果实现永远不能提供方向信息,则应在所有属性设置为null的情况下触发该事件。
要更正设备方向API的这一部分,他们打开了r263415
并告诉chrome在所有设备上触发devicemotion
事件,并只传递W3C specification draft中指定的空值。
这就是为什么这种行为发生了变化。
答案 1 :(得分:0)
如果将侦听器包装在if浏览器width / navigator语句中,该怎么办?我知道它并不理想,但最近很多事情似乎都出现了问题。我目前正在遭遇无法治愈的错误(或看起来如何)我的控制台一直空白,我必须使用金丝雀进行任何调试任务。