【问题标题】:Handling GUI after clicking the Back Button单击后退按钮后处理 GUI
【发布时间】:2010-06-08 13:34:48
【问题描述】:

在用户进入条目页面之前,我使用一个小 JS 将条目标记为单击时已读。 当用户点击返回时,我使用的removeClass 似乎没有保持效果。

有没有办法强制这种 Back 行为?

【问题讨论】:

    标签: javascript user-experience


    【解决方案1】:

    IE 8、Firefox 和其他浏览器在按下后退按钮时会记住表单条目。当用户点击刷新或返回时,您可以使用它在页面中存储一些状态。

    在页面上的某处创建一个隐藏的文本区域并将您的额外状态存储在那里。我使用 onbeforeunload 来存储状态,然后使用 onload 再次将其拉出。

    不幸的是,IE6 和 7 不支持在返回或重新加载时记住您的表单值,因此如果您关心这些浏览器,您将不得不求助于 cookie 之类的东西。请记住将您存储在 cookie 中的数据量保持在少量,因为它将在每次请求时发送到服务器。您还需要某种方法来清除该 cookie。

    当我想保持大量不同的状态时,我使用JSON.stringify from Douglas Crockford's json2.js。

    【讨论】:

      【解决方案2】:

      当用户点击返回时,浏览器会从头开始重新加载页面(Firefox 除外,它会记住表单值),并且旧页面的 Javascript 及其效果都消失了。

      要解决此问题,您可以将页面状态保存在 cookie 中,然后在页面加载时读取 cookie 并使用 Javascript cookie library 恢复状态。

      【讨论】:

      • 对于该特定问题的解决方案过于复杂,但谢谢 :)
      • 如果您使用库,cookie 一点也不复杂。
      【解决方案3】:

      按照建议,您可以使用 cookie。或者,如果您不想这样做,您可以将信息存储在隐藏的表单字段中,并在页面加载(或 domready)时读取值并根据需要设置页面状态。

      【讨论】:

        【解决方案4】:

        使用 JS 执行此操作的唯一方法是在 cookie 中存储用户访问的项目,并在页面加载时将 cookie 中的条目标记为“已访问”。缺点是项目加载到视图中和它们被标记为已访问之间会有一个小的延迟(有点像 StackOverflow 上的用户忽略和喜爱的标签)。

        除此之外,您可以使用一些服务器端代码来记住会话中访问过的条目。

        如果条目是 元素,您可以使用以下方式设置它们的样式:

        a:visited {}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-22
          • 1970-01-01
          • 2010-12-16
          • 2013-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多