尝试创建一个本地使用的应用程序,该应用程序从我的 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 工作。