Проверка Javascript AudioContext не работает в Internet Explorer 11 - PullRequest
0 голосов
/ 25 мая 2018

У меня есть этот 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 не переходит к строке с ошибкой и, следовательно, не выдает ошибку?

...