【问题标题】:deviceorientation not working设备方向不起作用
【发布时间】:2013-03-11 06:49:28
【问题描述】:

嗯,我有这个小脚本:

<script>
window.addEventListener('deviceorientation', function(event) {
  var a = event.alpha;
  var b = event.beta;
  var g = event.gamma;
}, false);
</script>

<script>
setInterval('alert(""+g+"");', '1000');
</script>

应该添加deviceorientation,将其附加到页面上,并每隔 1 秒提醒一下当前方向是什么,即伽玛值。

但它不起作用? 没有任何警报! 任何提示...想法...?

编辑:我在控制台日志中收到“Uncaught ReferenceError: g is not defined”...但它已定义!

【问题讨论】:

  • 当我将其更改为window.ondevicemotion = function(event) { 时,它也不起作用
  • 我什么都不能尝试。我已经提供了我的代码,这不是我可以解决代码问题的问题。我只是要求修复......这些不再允许在SO上吗?我不知道现在该尝试什么!我在寻求帮助!
  • 你为什么不能尝试任何东西?我投了反对票,因为“这个问题没有显示任何研究工作;不清楚或没有用”。
  • 我确实做了研究工作。我编写了这段代码,我正在寻求帮助。怎么不清楚?
  • 怎么不工作了?有没有错误代码?你试过调试吗?

标签: javascript html device-orientation uideviceorientation


【解决方案1】:

var 语句将变量的范围设置为它所在的函数。

您正在尝试访问全局范围内的局部变量——它不存在。

此外,在出现deviceorientation 之前,您不会设置变量,但您会一直尝试读取它。

你必须像这样重写你的代码:

<script>
window.addEventListener('deviceorientation', function(event) {

  var a = event.alpha;
  var b = event.beta;
  var g = event.gamma;

  console.log( g.toString() ); // Better to use a non-blocking method like console.log to display results.

}, false);
</script>

【讨论】:

  • 哇!我认为var 是声明任何东西的唯一方法!!哇,我刚刚做了g = VARIABLE INFO HERE;,它成功了!!在全球范围内!!哇我从来不知道这个!
  • @user2155738:应该避免在全局范围内使用(声明)变量。相反,请使用上面将变量 g 包含在匿名函数范围内的代码,或者了解有关如何使用 IIFE 和函数范围保持变量私有的更多信息。更多信息(只是一个好的开始):stackoverflow.com/questions/1841916/…。此外,在声明变量时,请始终尝试使用 let、const 或 var。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
相关资源
最近更新 更多