【问题标题】:Firefox 32-bit does not fire ondevicechange eventFirefox 32 位不会触发 ondevicechange 事件
【发布时间】:2023-03-06 19:15:01
【问题描述】:

我在 Firefox (77.0) 32 位版本中使用 MediaDevices.ondevicechange 事件时遇到问题。 该事件根本没有被触发。在 Firefox (77.0) 64 位中,代码按预期工作。我的机器是 64 位 Windows 10 台式电脑。

official mozilla site 上的示例也不起作用 - 它无法检测 32 位 Firefox 中的设备更改。

还有其他人遇到这个问题吗?这是错误还是预期行为?

有没有办法通过 javascript 区分 Firefox 32 位和 64 位?我看不到仅通过特征检测来做到这一点的方法,因为它们的行为相同(代码方面)。 如果是的话,我至少可以实现某种回退。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript firefox webrtc getusermedia


    【解决方案1】:

    devicechange 事件方面,32 位和 64 位版本的 Firefox 应该没有区别。

    我的猜测是您在两个版本中使用不同的配置文件运行,并且您已将持久相机或麦克风权限授予您的网站,而不是另一个。

    Firefox 有一个bug,它将devicechange 事件限制在当前已经在积极使用摄像头或麦克风,或者已被授予持久摄像头或麦克风权限的页面(您已检查☑ Remember this decision)过去。

    您可以在 Firefox 中测试它here

    1. 插入或移除 USB 或蓝牙摄像头 → 没有任何反应
    2. 点击Start camera!按钮并分享相机。
    3. 插入或移除 USB 或蓝牙摄像头 → “设备更改!” 已记录

    这个错误有望很快得到解决。

    【讨论】:

    • 感谢您的回复。然而,行为上的不同是一回事:我在一个私人标签中使用了两个干净的安装 32 位和 64 位,一个接一个。在 Mozilla 页面上,我单击“开始”,然后接受音频权限对话框(对于我来说,Mozilla ondevicechange 页面上没有记住此决定复选框)。如果我拔下麦克风,需要几秒钟,但在 64 位中,麦克风会从音频设备列表中消失。在 32 位中,无论我等待多长时间,麦克风都会保留在列表中。
    • 我再次尝试使用您发布的小提琴,结果相同。 Firefox 64 位,接受并按开始后,显示“设备更改!”输出,Firefox 32-Bit 没有。
    【解决方案2】:

    有关区分 32 位和 64 位问题的方法的广泛讨论,请参阅:

    Detect 64-bit or 32-bit Windows from User Agent or Javascript?

    【讨论】:

    • 感谢您的回复,看来无法检测64 vs 32-Bit Firefox,只针对系统。问题在于,您可以在 64 位机器上安装 Firefox 32 位。在这种情况下,检测将失败。
    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2019-05-21
    相关资源
    最近更新 更多