Javascript для отслеживания количества прослушиваемого звука в Qualtrics - PullRequest
0 голосов
/ 25 марта 2020

В настоящее время я пытаюсь использовать Javascript, чтобы записать, какую часть аудиоклипа кто-то выберет для прослушивания в моем опросе Qualtrics. Однако по какой-то причине мой код продолжает возвращать все 0 (как в журнале консоли, так и во встроенном файле данных). Я все еще очень новичок в Javascript и буду очень признателен за еще один набор глаз!

Qualtrics.SurveyEngine.addOnload(function() {
    /*Place your JavaScript here to run when the page loads*/
    function roundNumber(number, digits) {
        var multiple = Math.pow(10, digits);
        var rndedNum = Math.round(number * multiple) / multiple;
        return rndedNum;
    };

    // variables to keep track of progress
    var audioListened = 0;
    var audioSkipped = 0;
    var lastPosition = 0;

    // initialize data to 0
    Qualtrics.SurveyEngine.setEmbeddedData('totalTime', 0);

    var audio_element = jQuery("audio.qmedia") // HTML audio element to track

    // as the audio plays, we update the data with the total amount of time listened
    audio_element.ontimeupdate = function(event) {
        audioListened = event.currentTime - audioSkipped;
        lastPosition = event.currentTime;
        Qualtrics.SurveyEngine.setEmbeddedData('totalTime', roundNumber(audioListened, 2));
    };
    console.log(audioListened, audioSkipped);


    // when participant skips time, we keep track of this to subtract from total time
    audio_element.onseeked = function(event) {
        audioSkipped = (event.currentTime - lastPosition); // adds fast-forwarding, subtracts rewinding from total
    };
    console.log(audioListened, audioSkipped);

});

1 Ответ

0 голосов
/ 25 марта 2020

Лучший способ справиться с этим - использовать свойство played медиаэлемента . Он дает вам TimeRanges объект, который вы можете использовать, чтобы выяснить, какие части были просмотрены / прослушаны.

for (let i=0; i<audio.played.length; i++) {
  // Logs something like:  0, 5.3333
  console.log(audio.played.start(i), audio.played.end(i));
}

Вот рабочий пример JSFiddle: https://jsfiddle.net/qhryjz82/

...