Javascript 浏览器选项卡/窗口跟踪模式?

Javascript 浏览器选项卡/窗口跟踪模式?,javascript,browser,memcached,Javascript,Browser,Memcached,是否有一种可接受的模式用于跟踪同一选项卡/窗口正在加载的页面 某些流程(如分级提交流程)可以从验证同一选项卡是否请求执行的功能中获益匪浅 例如,在某些地方(步骤之间),我们将中间数据存储在memcache中,但这可能会导致问题,因为无法将该数据范围限定到该进程,而不是用户在同一进程上打开另一个选项卡/窗口 这适用于许多操作/流程 一些头脑风暴没有得出任何可靠的结论 有人知道吗?您可以使用查询参数(如果使用GET请求)或隐藏字段(如果使用POST请求)或两者(如果使用POST然后重定向,以允许用户

是否有一种可接受的模式用于跟踪同一选项卡/窗口正在加载的页面

某些流程(如分级提交流程)可以从验证同一选项卡是否请求执行的功能中获益匪浅

例如,在某些地方(步骤之间),我们将中间数据存储在memcache中,但这可能会导致问题,因为无法将该数据范围限定到该进程,而不是用户在同一进程上打开另一个选项卡/窗口

这适用于许多操作/流程

一些头脑风暴没有得出任何可靠的结论


有人知道吗?

您可以使用查询参数(如果使用GET请求)或隐藏字段(如果使用POST请求)或两者(如果使用POST然后重定向,以允许用户刷新浏览器)来维护多步骤流程的状态

如果您在服务器上维护状态(例如,在DB或memcached中),您可以在查询参数或隐藏字段中保留一个“事务密钥”

但要小心——根据我的经验,可以相当干净地设计这样一个有状态的多阶段流程,但实现和维护一个不令人惊讶的用户体验可能会很棘手。例如,当您在两个阶段之间来回移动时会发生什么?您可以明确地允许这样做,或者用户可以使用“后退”按钮,但该过程仍然有意义

编辑:

作为一个具体例子:

  • 用户单击“启动多步骤流程”,向服务器发送帖子
  • 那么服务器呢
    • 初始化进程的状态
    • 给它唯一的键“A”
    • 将其保存在临时存储中(例如memcached)
    • 将用户重定向到“/process/A/step/1”
  • 该过程的下一步是“/process/A/step/2”
  • 用户在另一个选项卡中再次单击“启动多步骤流程”
  • 服务器执行相同的操作,但是
    • 使用唯一键“B”
    • 重定向到“/流程/B/步骤/1”
  • 第二个流程的下一步是“/process/B/step/2”
  • 这两个进程现在具有独立的服务器端状态

  • 这仍然不能防止在windows之间复制/粘贴URI。然而,这可能是可以接受的风险。如果可以检测到,您至少可以警告用户。浏览器向窗口对象公开一个唯一的选项卡id会很好。:)谢谢你的评论。