首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络工作者中的传感器读取

网络工作者中的传感器读取
EN

Stack Overflow用户
提问于 2014-02-05 15:10:41
回答 1查看 838关注 0票数 3

似乎我们无法在网络工作者中获取传感器数据。我想知道背后的原因。用例是,我正在考虑获取工作线程中的地理位置数据,并且只将处理过的版本发送到主线程。

对于GPS,这个帖子表示在工作线程中不支持它(没有给出原因)。我仔细检查了一下,navigator.geolocation在网络工作者中不受支持。对于加速器和陀螺仪,我们有DeviceOrientationEvent和DeviceMotionEvent。但是我们需要通过window对象来使用它们,这个窗口对象对于工作线程是不可用的。同样的情况也适用于环境光事件。

所以我的问题是:

  1. 为什么网络工作者不支持navigator.geolocation?我看不出有什么理由在工作线程中阻止它。我认为不应该出现线程安全或安全问题。
  2. navigator.geolocation属于导航员吗?这看起来是个愚蠢的问题。但我在网上找不到一个很好的解释。Web工作人员可以访问导航器对象。我很困惑为什么不支持navigation.geolocation。
  3. 为什么我们没有加速器和陀螺仪的原始传感器读数?我知道抽象的事件是有用的。但在某些情况下,我们希望使用原始数据进行处理。我发现PhoneGap提供了访问原始传感器数据的方法,例如通过navigator.accelerometer。但我的理解是,这样的API不属于标准化的HTML规范。
  4. 决定是否在工作线程中支持通用传感器读数的相关设计决策是什么?W3C设备API工作组目前搁置了HTML中的通用传感器读取支持。看到当前的传感器支持(gps,加速器,陀螺仪),我想我们会得到抽象的DOM事件。而且它很可能通过导航器对象获得原始传感器数据读数。
EN

回答 1

Stack Overflow用户

发布于 2014-03-11 03:27:24

好的。在阅读了一些code代码之后,我现在有了自己的问题2的答案。其他三个问题我还是没有答案..。

对问题2的回答: navigator.geolocation是否属于导航器?

navigator.geolocation只属于主线程中的导航器,而不属于工作线程中的导航器。

主要原因是,尽管工作线程中的导航器看起来与主线程中的导航器完全相同,但这两个导航器在C++端有独立的实现。这就是为什么工作线程中不支持navigator.geolocation。

相关代码为Navigator.idl代码,WorkerNavigator.idl代码为铬代码。您可以看到,它们是.idl文件中的两个独立接口。而且它们在绑定的C++端有独立的实现。导航器是DOMWindow的属性,而WorkerNavigator是WorkerGlobalScope的属性。

但是,在JavaScript方面,它们具有相同的名称: navigator。嗯,我知道这两个导航器在两个不同的范围内,所以没有名字冲突。但是,当我在JavaScript中使用API时,如果主线程和工作线程具有相同的名称,我希望它们都有类似的行为。歧义就是这样发生的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21580944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档