Что делать с потерянным экземпляром SCORM 2004 API

У меня довольно простая внутренняя LMS. По сути, он состоит из страницы ASP.Net, которая обрабатывает запуск курсов и реализации javascript API SCORM 2004. Реализация javascript включена на страницу запуска ASP.Net с помощью простого включения в разделе заголовка.

Когда курс, совместимый со SCORM, запускается страницей в новом окне, он использует стандартный алгоритм поиска SCORM API и находит экземпляр SCORM API на странице запуска курса LMS. Пока это довольно стандартное поведение SCORM, ничего необычного.

Проблема, с которой я сталкиваюсь, заключается в том, что если страница запуска обновляется по какой-либо причине, экземпляр API теряется, и курс больше не может взаимодействовать с API. Я вернулся к документации по стандартам SCORM 2004 и не нашел там ничего о том, что SCO должен делать в данном случае.

Является ли это просто ограничением архитектуры SCORM, или я могу что-то сделать в своей реализации, чтобы этого не произошло?

В обязанности SCO входит повторная попытка поиска SCORM API и его повторная инициализация?

Я знаю, что есть много LMS, которые реализуют SCORM, и мне интересно, знает ли кто-нибудь, какие методы они реализовали, чтобы предотвратить это, если таковые имеются?

Есть ли у кого-нибудь, знакомого с архитектурой SCORM LMS, какие-либо предложения по предотвращению потери экземпляра API при перезагрузке страницы открытия?


person Will Russell    schedule 25.10.2019    source источник


Ответы (1)


Основная проблема заключается в том, что после обновления окна проигрывателя отношение window.opener между окном содержимого и проигрывателем больше не будет действительным. Даже если бы вы могли заставить контент снова попробовать свой алгоритм поиска API, он бы не работал из-за этого.

Один из альтернативных подходов — принудительно закрывать содержимое всякий раз, когда окно проигрывателя обновляется/закрывается. Я работаю в компании, которая производит очень популярный проигрыватель SCORM, и мы идем по этому пути.

Когда ваша страница плеера открывает окно с содержимым в нем, вы можете сохранить ссылку на это новое окно в переменной. Затем в обработчике перед выгрузкой/выгрузкой на вашей странице вы можете проверить, открыто ли окно содержимого, и закрыть его как часть процедуры выхода.

Хотя это не совсем тот результат, которого вы хотели, он мешает учащемуся продолжать взаимодействовать с контентом в состоянии, когда его прогресс фактически не будет сохраняться.

person patmortech    schedule 07.11.2019
comment
Спасибо за предложение, я могу в конечном итоге реализовать что-то подобное в долгосрочной перспективе. На данный момент я наложил на него пластырь, изменив URL-адрес запуска, который выводится программным обеспечением для создания курса, чтобы оно загружало ссылку на сам SCORM API. Это работает, но не является хорошим постоянным решением, так как требует изменения выходных файлов для добавления ссылки каждый раз при публикации курса. - person Will Russell; 07.11.2019