Fixed stopping media when changing question.[HFJ-1218]
parent
45a22dec8d
commit
3a038ea027
|
@ -160,6 +160,12 @@ H5P.QuestionSet = function (options, contentId) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _stopQuestion = function (questionNumber) {
|
||||||
|
if (questionInstances[questionNumber]) {
|
||||||
|
pauseMedia(questionInstances[questionNumber])
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var _showQuestion = function (questionNumber) {
|
var _showQuestion = function (questionNumber) {
|
||||||
// Sanitize input.
|
// Sanitize input.
|
||||||
if (questionNumber < 0) {
|
if (questionNumber < 0) {
|
||||||
|
@ -404,6 +410,7 @@ H5P.QuestionSet = function (options, contentId) {
|
||||||
|
|
||||||
// Add next question button
|
// Add next question button
|
||||||
question.addButton('next', '', function () {
|
question.addButton('next', '', function () {
|
||||||
|
_stopQuestion(currentQuestion);
|
||||||
_showQuestion(currentQuestion + 1);
|
_showQuestion(currentQuestion + 1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -411,6 +418,7 @@ H5P.QuestionSet = function (options, contentId) {
|
||||||
// Add previous question button
|
// Add previous question button
|
||||||
if (questionInstances[0] !== question) {
|
if (questionInstances[0] !== question) {
|
||||||
question.addButton('prev', '', function () {
|
question.addButton('prev', '', function () {
|
||||||
|
_stopQuestion(currentQuestion);
|
||||||
_showQuestion(currentQuestion - 1);
|
_showQuestion(currentQuestion - 1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -444,6 +452,7 @@ H5P.QuestionSet = function (options, contentId) {
|
||||||
|
|
||||||
// Set event listeners.
|
// Set event listeners.
|
||||||
$('.progress-dot', $myDom).click(function () {
|
$('.progress-dot', $myDom).click(function () {
|
||||||
|
_stopQuestion(currentQuestion);
|
||||||
_showQuestion($(this).index());
|
_showQuestion($(this).index());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -549,6 +558,36 @@ H5P.QuestionSet = function (options, contentId) {
|
||||||
this.showSolutions = function() {
|
this.showSolutions = function() {
|
||||||
renderSolutions = true;
|
renderSolutions = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the given element's playback if any.
|
||||||
|
*
|
||||||
|
* @param {object} instance
|
||||||
|
*/
|
||||||
|
var pauseMedia = function (instance) {
|
||||||
|
try {
|
||||||
|
if (instance.pause !== undefined &&
|
||||||
|
(instance.pause instanceof Function ||
|
||||||
|
typeof instance.pause === 'function')) {
|
||||||
|
instance.pause();
|
||||||
|
}
|
||||||
|
else if (instance.video !== undefined &&
|
||||||
|
instance.video.pause !== undefined &&
|
||||||
|
(instance.video.pause instanceof Function ||
|
||||||
|
typeof instance.video.pause === 'function')) {
|
||||||
|
instance.video.pause();
|
||||||
|
}
|
||||||
|
else if (instance.stop !== undefined &&
|
||||||
|
(instance.stop instanceof Function ||
|
||||||
|
typeof instance.stop === 'function')) {
|
||||||
|
instance.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
// Prevent crashing, log error.
|
||||||
|
H5P.error(err);
|
||||||
|
}
|
||||||
|
};
|
||||||
};
|
};
|
||||||
H5P.QuestionSet.prototype = Object.create(H5P.EventDispatcher.prototype);
|
H5P.QuestionSet.prototype = Object.create(H5P.EventDispatcher.prototype);
|
||||||
H5P.QuestionSet.prototype.constructor = H5P.QuestionSet;
|
H5P.QuestionSet.prototype.constructor = H5P.QuestionSet;
|
||||||
|
|
Loading…
Reference in New Issue