如果重新加载页面,请避免在页面重定向后返回上一页

时间:2019-05-23 12:43:17

标签: javascript html django backbone.js otree

我是一名社会研究人员,并且对网络技术还比较陌生,因此我遇到了一些基本的技术问题,希望社区能够为我提供帮助。我打算提供在线课程,然后与学生进行一些社交实验。本课程部分是通过smartsparrow https://www.smartsparrow.com/提供的,实验部分是通过Otree https://otree.readthedocs.io/en/latest/misc/django.html实现的(如果我理解正确的话,这是Django库)。我必须将实验部分放到课程本身中,这可以通过smartsparrow提供的Iframe完成。他们有一个非常小的图书馆,可以帮助我从smartsparrow提取信息到发布在其iframe(https://github.com/SmartSparrow/simcapi-js)中的网页。有了这个SimCapi库,我就可以将cohortId从smartsparrow提取到我的Otree页面。 在Otree平台中,对于来自Smartsparrow的每个cohortID,我都有单独的URL。因此,我制作了一个简单的Django html页面,其中仅包含纯文本,表示学生将很快被重定向到其教室的正确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? Django可能不错,但坦白地说,我对此并不熟悉。

smartsparrow界面图片和流程图:https://imgur.com/Tt3rQo1

(ii)琐碎的问题(实际上并不需要解决,而只是征求意见):使用上面的代码,有时学生会陷入重定向页面,他们必须刷新才能重定向到作品。在我看来,smartsparrow代码无法及时收集cohortId。我的理论合理吗?

0 个答案:

没有答案