Safari 上的 AudioContext 问题
AudioContext issue on Safari
我正尝试在我的打字稿文件中为 Angular 5 应用程序使用 AudioContext。它在 Chrome 上运行良好,但不适用于 Safari。我通过谷歌搜索看到的所有内容都说要使用 window.webkitAudioContext
但是当打字稿编译器运行时说它不存在于类型 Window.
let context = new AudioContext();
let source = context.createBufferSource();
context
.decodeAudioData(event.body)
.then(x => {
source.buffer = x;
source.connect(context.destination);
source.start(0);
});
您可以将 window
转换为 any
:
(window as any).AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;
let context = new AudioContext();
您应该扩展 Window
接口,然后扩充 window 对象。
假设您正在使用 angular-cli,将以下内容添加到您的 typings.d.ts
文件中:
declare interface Window {
AudioContext: AudioContext;
}
然后在 polyfills.ts
文件中,您可以设置 AudioContext
属性:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
我选择了这条线:
const audioContext: AudioContext = new (window["AudioContext"] || window["webkitAudioContext"])();
您必须将所需的属性添加到全局命名空间中的 Window
接口。
declare global {
interface Window {
AudioContext: typeof AudioContext;
webkitAudioContext: typeof AudioContext;
}
}
const context = new (window.AudioContext || window.webkitAudioContext)();
我正尝试在我的打字稿文件中为 Angular 5 应用程序使用 AudioContext。它在 Chrome 上运行良好,但不适用于 Safari。我通过谷歌搜索看到的所有内容都说要使用 window.webkitAudioContext
但是当打字稿编译器运行时说它不存在于类型 Window.
let context = new AudioContext();
let source = context.createBufferSource();
context
.decodeAudioData(event.body)
.then(x => {
source.buffer = x;
source.connect(context.destination);
source.start(0);
});
您可以将 window
转换为 any
:
(window as any).AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;
let context = new AudioContext();
您应该扩展 Window
接口,然后扩充 window 对象。
假设您正在使用 angular-cli,将以下内容添加到您的 typings.d.ts
文件中:
declare interface Window {
AudioContext: AudioContext;
}
然后在 polyfills.ts
文件中,您可以设置 AudioContext
属性:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
我选择了这条线:
const audioContext: AudioContext = new (window["AudioContext"] || window["webkitAudioContext"])();
您必须将所需的属性添加到全局命名空间中的 Window
接口。
declare global {
interface Window {
AudioContext: typeof AudioContext;
webkitAudioContext: typeof AudioContext;
}
}
const context = new (window.AudioContext || window.webkitAudioContext)();