Как бороться с потерянным экземпляром SCORM 2004 API - PullRequest
0 голосов
/ 25 октября 2019

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

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

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

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

Ответственность за поиск SCORM лежит на SCO. API снова и переинициализировать его?

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

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

1 Ответ

0 голосов
/ 07 ноября 2019

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

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

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

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

...