Я социальный исследователь и довольно плохо знаком с веб-технологиями, поэтому у меня есть несколько основных технических проблем, с которыми, я надеюсь, сообщество сможет мне помочь. Я планирую проводить онлайн-уроки и впоследствии проводить некоторые социальные эксперименты со студентами. Часть урока предоставляется через smartsparrow https://www.smartsparrow.com/ Экспериментальная часть реализуется через Otree https://otree.readthedocs.io/en/latest/misc/django.html (это библиотека Django, если я правильно понимаю). Я должен поместить экспериментальную часть в сам урок, что я могу сделать с помощью Ифрама, предоставленного smartsparrow. У них есть очень маленькая библиотека, которая помогает мне извлекать информацию из smartsparrow на веб-страницу, размещенную в их Iframe (https://github.com/SmartSparrow/simcapi-js).). С помощью этой библиотеки SimCapi я смог извлечь cohortId из smartsparrow на мою страницу Otree.
На платформе Otree у меня есть отдельный URL для каждого идентификатора когорты из Smartsparrow. Таким образом, я создал простую HTML-страницу на Django с простым текстом, в котором говорилось, что ученики будут вскоре перенаправлены на правильный URL-адрес для своего класса. Для перенаправления я просто использовал javascript:
<script src='https://lib.smartsparrow.com/simcapi-js-3.1.0.min.js'></script>
<script type="text/javascript">
var simModel = new simcapi.CapiAdapter.CapiModel({
coID: '34dsfd'
});
simcapi.CapiAdapter.expose('coID', simModel,
{alias: 'cohoID'});
simcapi.Transporter.addInitialSetupCompleteListener(init);
function init(args) {
cohortID = simcapi.Transporter.getConfig().cohortId;
console.log(cohortID)
simModel.set('coID', cohortID);
var dict = {
"gsgrrjgk":"https://otreesampleurl.com/hsdfme1/",
"rhg6j816":"https://otreesampleurl.com/hsdfme2/",
"5n2xclm6":"https://otreesampleurl.com/hsdfme3/",
"ipeni2p9":"https://otreesampleurl.com/hsdfme4/",
"iykfjurh":"https://otreesampleurl.com/hsdfme5/",
"bg43ljv3":"https://otreesampleurl.com/hsdfme6/",
"eaa1yy1c":"https://otreesampleurl.com/hsdfme7/",
};
window.location.replace(dict[cohortID]);
};
simcapi.Transporter.notifyOnReady();
</script>
Код работает, НО:
(i) Основная проблема: после перенаправления, если им случится обновить страницу, они вернутся на страницу перенаправления и снова будут перенаправлены. Поэтому им придется снова провести весь эксперимент в качестве нового игрока. Есть ли способ предотвратить это с помощью JavaScript? Джанго может быть в порядке, но, правда, я не знаком с ним.
Изображение интерфейса и блок-схемы smartsparrow: https://imgur.com/Tt3rQo1
(ii) Тривиальная проблема (на самом деле ее не нужно решать, а нужно просто спросить мнение): с помощью приведенного выше кода иногда ученики застревают на странице перенаправления, они вынуждены обновляться для перенаправления на работы. Мне кажется, что код smartsparrow не смог собрать когорту вовремя. Моя теория правдоподобна?