为什么 navigator.requestMIDIAccess() 可以在网站上运行,但不能在 Firefox 中的本地文件上运行?

问题描述 投票:0回答:1

尝试创建一个本地使用的应用程序,该应用程序从我的 MIDI 键盘接收消息。每当我打电话给

navigator.requestMIDIAccess()
时,我都会得到
TypeError: navigator.requestMIDIAccess is not a function
。但我可以访问实现此 API 的其他网站,并且不会收到该错误,系统会提示选择我的键盘作为输入,并且应用程序可以正常接收 MIDI 事件。如果有帮助的话,我使用 Firefox 和 Ubuntu,通过
file:///
访问我的应用程序。如果我在网站上,开发人员控制台甚至会自动完成
navigator.requestMIDIAccess()
,但当我查看本地文件时则不会。我认为本地使用 WebMIDI 比在线使用更更简单?这是怎么回事?!

我尝试使用

查询 MIDI 的权限策略状态
    navigator.permissions.query({ name: "midi", sysex: true }).then((result) => {
        console.log(result.state);
    });

控制台记录“提示”,而不是“拒绝”。我也检查过

window.isSecureContext
,这是“真的”。我不知道还要检查什么。我已经阅读了与此错误相关的 duckduckgo 结果的前 2 或 3 页,但遗憾的是,它们似乎都指向 Firefox 根本不支持此 API 的日子,因此没有涵盖我遇到的问题。我再次知道我的浏览器支持 MIDI,因为当我浏览到使用此 API 的其他应用程序时,它们工作得很好,并且当我查看任何非本地站点时,控制台会识别
navigator.requestMIDIAccess()
,但在使用
file:///
地址。我真的很想知道如何让 WebMIDI 工作。

javascript ubuntu firefox web-midi
1个回答
0
投票

Firefox 不支持 file:// URL 上的

navigator.requestMIDIAccess
API(即使它是安全上下文)。这可能会随着Bug 1850446而改变。

© www.soinside.com 2019 - 2024. All rights reserved.