昨天,我有
a question about the noteOn method of the AudioContext object.
我现在已经在这个AudioContext对象上转过身了.
这是我在桌面上的Safari中尝试过的以及相关的错误消息:
我现在已经在这个AudioContext对象上转过身了.
这是我在桌面上的Safari中尝试过的以及相关的错误消息:
var ctx // ctx = new(AudioContext || webkitAudioContext); // ReferenceError: Can't find variable: AudioContext // ctx = new(audioContext || webkitAudioContext); // ReferenceError: Can't find variable: audioContext // ctx = new(window.AudioContext || webkitAudioContext); // ReferenceError: Can't find variable: webkitAudioContext ctx = new(window.AudioContext || window.webkitAudioContext); // TypeError: 'undefined' is not a constructor (evaluating 'new(window.AudioContext || window.webkitAudioContext)')
问:如何定义myAudioContext使其适用于所有浏览器?
解决方法
浏览器支持限制
不幸的是,Web Audio API(id est AudioContext)是一个新引入的功能,并不是所有浏览器都支持.某些浏览器可能以其供应商前缀为前缀,但旧版浏览器根本不支持它.因此,要回答您的问题:您无法在所有浏览器上使用AudioContext.
不过,您仍然可以使用功能检测在支持的浏览器上使用Web Audio API(见下文),或者只是检查您的浏览器是否支持它here.查看并查找您的Safari版本:此站点会告诉您该功能是否可用,如果有前缀,你必须使用哪个前缀.
为确保您可以在支持它的任何浏览器上使用Web Audio API,您可以使用功能检测以及与供应商前缀对象的相对回退.如果不支持AudioContext对象,您将停止执行脚本并提醒用户.这是一个例子:
var AudioContext = window.AudioContext // Default || window.webkitAudioContext // Safari and old versions of Chrome || false; if (AudioContext) { // Do whatever you want using the Web Audio API var ctx = new AudioContext; // ... } else { // Web Audio API is not supported // Alert the user alert("Sorry,but the Web Audio API is not supported by your browser. Please,consider upgrading to the latest version or downloading Google Chrome or Mozilla Firefox"); }
请注意,截至目前,webkit是唯一现有的以供应商为前缀的AudioContext,因为Mozilla和Opera使用常规的无前缀对象,而IE还不支持Web Audio API.