У меня возникли проблемы с пакетами HTML5 SCORM.
TL;DR; LMSFinish() не вызывается. x.prototype.terminate() в SCORM также не вызывается, что наводит меня на мысль о проблеме с пакетом.
LMSFinish() должен вызываться при нажатии кнопки выхода (и/или при закрытии окна). Однако console.log() и точки останова в LMSFinish() показывают, что это не вызывается.
LMSInitialise работает хорошо, когда окно открывается, но для LMSFinish после проверки исходного кода внутри SCORM и размещения точек останова в функции window.unload() я вижу, что это только часть пути к выходу.
window.unload вызывает closeLms(), который, в свою очередь, запускает запутанный x.prototype.terminate(). Эта функция завершения выполняет логическую проверку перед вызовом некоторых других функций, что в конечном итоге приводит к вызову LMSFinish(). Это никогда не заходит так далеко. Логическая проверка в x.prototype.terminate() всегда ложна. Если я установлю в консоли значение true, некоторые другие свойства не будут существовать, и результирующий вызов функции завершится ошибкой.
Кто-нибудь знает, почему SCORM не может запустить LMSFinish()? Тестовый пакет SCORM состоит из трех слайдов без взаимодействия.
РЕДАКТИРОВАТЬ: единственный написанный пользовательский код javascript — это обработчики для SCORM API (LMSInitialise, LMSFinish и т. д.). Они вызываются из javascript в пакете SCORM, сгенерированного любым приложением, которое пользователь решит использовать для его создания. (Articulate, Captivate и т. д.)