У меня есть этот JS
код, где я проверяю, определено ли AudioContext
, затем установите его, иначе верните undefined
:
function audioContextCheck() {
if (typeof AudioContext !== "undefined") {
return new AudioContext();
} else if (typeof webkitAudioContext !== "undefined") {
return new webkitAudioContext();
} else if (typeof mozAudioContext !== "undefined") {
return new mozAudioContext();
} else {
// return undefined
return "undefined"
}
}
var audioContext = audioContextCheck();
console.log(audioContext)
function audioRecording( e ) {
try{
console.log('audioContext is '+ audioContext)
if (audioContext != "undefined") {
audioContext.resume().then(() => {
console.log('Resumed audioContext on end-recording');
e.classList.remove('recording');
recording = false;
});
}
else {
console.log('IE audioContext not supported')
e.classList.remove('recording');
recording = false;
socketio.emit('end-recording');
}
}
catch(error){
console.log(error)
console.log('Resumed audioContext on end-recording');
e.classList.remove('recording');
recording = false;
}
}
}
Теперь этот JS
файл загружен из html
страницаНо в Internet Explorer 11
всякий раз, когда я загружаю эту страницу, я вижу syntax error
в строке audioContext.resume().then(() => {
.Я знаю, что IE не поддерживает AudioContext
, и поэтому я использую audioContextCheck()
, где я возвращаю undefined
, если AudioContext
не поддерживается, а затем в audioRecording()
я проверяю, если varaible audioContext
не равен undefined
тогда только выполняйте код под ним.Так что для IE
он не должен выполнять этот код, но все равно выдает синтаксическую ошибку в строке.
Также в моем коде есть оператор console.log()
, но я не вижу ничего, что появилось на консоли в IE 11
(в инструментах разработчика).
В чем заключается ошибка, которую я здесь делаю, и какой способ был бы более элегантным, чтобы убедиться, что IE не переходит к строке с ошибкой и, следовательно, не выдает ошибку?