Предотвратите возврат к предыдущей странице после перенаправления страницы, если перезагрузите страницу - PullRequest
1 голос
/ 23 мая 2019

Я социальный исследователь и довольно плохо знаком с веб-технологиями, поэтому у меня есть несколько основных технических проблем, с которыми, я надеюсь, сообщество сможет мне помочь. Я планирую проводить онлайн-уроки и впоследствии проводить некоторые социальные эксперименты со студентами. Часть урока предоставляется через 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 не смог собрать когорту вовремя. Моя теория правдоподобна?

...