Изменения Google Chrome и работа LMS систем и электронных курсов
В феврале 2020 года Google обновит браузер Chrome до версии 80. В этой версии будет два изменения, которые потенциально могут затронуть прохождение электронных курсов и тестов в системах дистанционного обучения (СДО).
Что будет, если ничего не делать?
Важно понимать, что есть два основных способа, которые используют курсы для общения с сервером: прямой (запросы исходят непосредственно от курса – стандарты AICC, CMI5/TinCan), через API-посредника (все стандарты SCORM). В случае прямых запросов разработчик СДО никак не может повлиять на курс – изменение кода курса это прерогатива авторов курса. В случае запросов через SCORM API он может быть модифицирован и адаптирован под новые реалии.
Далее, различные авторские средства используют разные политики сохранения данных. Курсы, сделанные в редакторе CourseLab, например, сохраняют данные порциями по каждому переходу со слайда на слайд, посылка данных на закрытие окна используется скорее для гарантии, т.о. максимум, что может быть заблокировано – запись изменений на последнем слайде. А, к примеру, курсы iSpring ведут себя иначе, в процессе прохождения они могут пересылать только промежуточные данные (или вообще ничего не передавать – зависит от логики курса), а полное состояние передают как раз по нажатию специальной кнопки или закрытию окна, т.о. в плохом случае может быть потеряна существенная часть информации.
Проигрыватели тестов в WebTutor (как старый, так и современный версии 3) в настоящее время используют при закрытии окна именно синхронный запрос, который будет блокирован в новой версии Google Chrome. Однако, поскольку стандартная политика передачи данных в проигрывателях тестов близка к политике CourseLab – данные передаются на каждое переход между вопросами, поэтому в большинстве случаев, даже если запрос на закрытие окна будет блокирован, потери данных не произойдет. Однако, если в тесте выбрана опция пересылки данных ТОЛЬКО по закрытию окна, то это может стать проблемой. Также возможна частичная потеря данных, если в тесте выбран способ показа не по одному вопросу, а списком и частота пересылки данных не выставлена на каждое изменение вопроса.
Итого в приложении к системе WebTutor:
Что можно сделать на стороне клиента, чтобы отключить ограничение?
Корпоративные пользователи как временное решение могут добавить флаг AllowSyncXHRInPageDismissal в настройках Chrome (см. ссылку на документ Google в конце текста). Можно также остановить обновление Chrome на версии 79 на какое-то время.
Что будет изменено в WebTutor?
Изменения в SCORM API, проигрыватели тестов Встроенный и Версия 3 для исключения синхронных запросов на закрытие окна будут внесены в релиз 2019.4.
Что будет изменено в редакторе CourseLab?
Хотя, благодаря стандартной политике сохранения данных, финальный запрос на сохранение не является критичным, изменения для протоколов AICC и CMI5 будут внесены в следующем билде – во 2 квартале 2020 года.
Полный перечень изменений в новой версии Google Chrome:
https://developers.google.com/web/updates/2019/12/chrome-80-deps-rems
Изменение 1. Будут запрещены синхронные (т.е. с ожиданием ответа от сервера) посылки XMLHTTPRequest, запускаемые на события закрытия и потери фокуса окна/вкладки/iframe (далее - окно).
Если события потери фокуса (pagehide, visibilitychange) обычно не используются в курсах и тестах, то события закрытия (beforeunload, unload) обычно используются в курсах и тестах для инициирования сохранения состояния на момент закрытия окна. Таким образом, если обработчик этого события в курсе или тесте использует именно синхронный запрос на сервер, этот запрос будет блокирован и данные не будут сохранены.Что будет, если ничего не делать?
Важно понимать, что есть два основных способа, которые используют курсы для общения с сервером: прямой (запросы исходят непосредственно от курса – стандарты AICC, CMI5/TinCan), через API-посредника (все стандарты SCORM). В случае прямых запросов разработчик СДО никак не может повлиять на курс – изменение кода курса это прерогатива авторов курса. В случае запросов через SCORM API он может быть модифицирован и адаптирован под новые реалии.
Далее, различные авторские средства используют разные политики сохранения данных. Курсы, сделанные в редакторе CourseLab, например, сохраняют данные порциями по каждому переходу со слайда на слайд, посылка данных на закрытие окна используется скорее для гарантии, т.о. максимум, что может быть заблокировано – запись изменений на последнем слайде. А, к примеру, курсы iSpring ведут себя иначе, в процессе прохождения они могут пересылать только промежуточные данные (или вообще ничего не передавать – зависит от логики курса), а полное состояние передают как раз по нажатию специальной кнопки или закрытию окна, т.о. в плохом случае может быть потеряна существенная часть информации.
Проигрыватели тестов в WebTutor (как старый, так и современный версии 3) в настоящее время используют при закрытии окна именно синхронный запрос, который будет блокирован в новой версии Google Chrome. Однако, поскольку стандартная политика передачи данных в проигрывателях тестов близка к политике CourseLab – данные передаются на каждое переход между вопросами, поэтому в большинстве случаев, даже если запрос на закрытие окна будет блокирован, потери данных не произойдет. Однако, если в тесте выбрана опция пересылки данных ТОЛЬКО по закрытию окна, то это может стать проблемой. Также возможна частичная потеря данных, если в тесте выбран способ показа не по одному вопросу, а списком и частота пересылки данных не выставлена на каждое изменение вопроса.
Итого в приложении к системе WebTutor:
- проблемы могут возникнуть у некоторых курсов, использующих «прямые» протоколы AICC/CMI5 И сохраняющих свое состояние только по событию закрытия окна;
- проблемы могут возникнуть для тестов, использующих стандартные проигрыватели тестов WebTutor с выбранной опцией передачи данных только по закрытию окна.
Что можно сделать на стороне клиента, чтобы отключить ограничение?
Корпоративные пользователи как временное решение могут добавить флаг AllowSyncXHRInPageDismissal в настройках Chrome (см. ссылку на документ Google в конце текста). Можно также остановить обновление Chrome на версии 79 на какое-то время.
Что будет изменено в WebTutor?
Изменения в SCORM API, проигрыватели тестов Встроенный и Версия 3 для исключения синхронных запросов на закрытие окна будут внесены в релиз 2019.4.
Что будет изменено в редакторе CourseLab?
Хотя, благодаря стандартной политике сохранения данных, финальный запрос на сохранение не является критичным, изменения для протоколов AICC и CMI5 будут внесены в следующем билде – во 2 квартале 2020 года.
Изменение 2. Открытие нового окна по событию закрытия предыдущего будет заблокировано
Это очень редкая ситуация, но иногда встречаются курсы, при запуске и проигрывании открывающие цепочку новых окон. Потенциально такие курсы могут быть затронуты этой блокировкой, но, возникновение проблемы крайне маловероятно. Повлиять на ее решение решение разра ботчики СДО не могут.Полный перечень изменений в новой версии Google Chrome:
https://developers.google.com/web/updates/2019/12/chrome-80-deps-rems