- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
亲爱的 Javascript 程序员,
Google 的 Closure Library 总是能让人抓狂。我希望您能在这个问题上帮助我:
我想通过 Closure 库中的函数内的 javascript 捕获 ondevicemotion
事件。如果没有闭包,我从本页获取的以下代码一切正常(感谢作者):http://www.peterfriese.de/how-to-use-the-gyroscope-of-your-iphone-in-a-mobile-web-app/
以下代码片段显示了“我的”代码:
if (window.DeviceMotionEvent != undefined) {
console.log("DME");
window.ondevicemotion = function(e) {
console.log("ODM");
// handle events like e.rotationRate
...
}
}
这在独立的 html 页面中完美运行。两个 console.log
都会被触发。
相比之下,Closure 似乎在 window.ondevicemotion = function(e) {
方面存在问题,因为控制台记录“DME”而不是“ODM”。没有编译器警告或错误。
有人也认识到这样的问题吗?遗憾的是,我不知道为什么 Closure 表现得如此愚蠢(更可能我是如此愚蠢)。 ;-)
感谢您的阅读!任何帮助表示赞赏!
最佳答案
在 ADVANCED_COMPILATION 中运行时,闭包编译器为我最小化并混淆了 window.ondevicemotion
,所以我假设这也是您的问题。有两种方法可以解决这个问题:
闭包计算机不会重命名通过括号表示法引用的任何属性。以下内容不应被混淆(尽管它可能会被重写为 window.ondevicemotion
):
window['ondevicemotion'] = function(event) { ... }
与上面的情况类似,闭包编译器接受提示并且不会重写该属性,保持原样。然而,这有一个很好的好处,那就是为您提供一些类型检查,因为您正在为闭包编译器定义 extern 的签名:
/**
* @param {goog.events.Event} event
*/
window.ondevicemotion = function(event) {};
使用哪一个最终由您决定。在这种情况下,我很可能会选择第二个选项,并且只有在由于某种原因无法使用外部程序时才返回第一个选项。
关于javascript - 闭包库 ondevicemotion 从未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489599/
亲爱的 Javascript 程序员, Google 的 Closure Library 总是能让人抓狂。我希望您能在这个问题上帮助我: 我想通过 Closure 库中的函数内的 javascript
我在 iOS 上访问 onDeviceMotion 事件时遇到问题。它适用于 Android。 我正在遵循教程,代码在我的 iOS 设备上运行得非常好,但是当我复制/粘贴完全相同的代码并从我的 iOS
我正在构建一个网络应用程序,其中涉及检测移动设备的摇动事件: if (this.hasDeviceMotion) { window.addEventListener('devicemotion', t
我正在使用 github 上的“摇动”功能 - 它具有基于浏览器的 javascript 检测。 //feature detect this.hasDeviceMotion = 'ondevicemo
我是一名优秀的程序员,十分优秀!