【问题标题】:remember a variable's history记住变量的历史
【发布时间】:2011-07-15 02:37:58
【问题描述】:

假设我有一个可以左右滑动并使用 ajax 加载新内容的页面。变量会根据滑动方向设置为 leftslide 或 rightlide。

当您在浏览器中单击后退按钮时,html5 popstate 事件启用并使用 ajax 加载最后一页。现在使用变量我可以确定按下后退按钮时滑入的方向if (var direction == 'leftslide'){ direction = 'rightslide'}(以获得良好的“后退”效果)。

但是,如果您按两次后退按钮,则幻灯片并不总是正确的,因为它只会反转幻灯片而不是查看该特定页面的幻灯片。

那么有什么方法可以保存变量历史并使用 javascript 取回订单?

感谢您阅读和思考这个问题:)

【问题讨论】:

  • 我没有给出-1,但我确实发现您的问题令人困惑;也许其他人觉得它太令人困惑以至于他们投了反对票。
  • 好吧:)。好吧,我不知道如何以不同的方式表达这个......

标签: javascript jquery


【解决方案1】:
var history = [];
var position = 1;

function onSlide() {
    history.push(currentPage);
};

function lastPage() {
    return history.length && history[history.length - 2];
};

function currentPage() {
    return history.length && history[history.length - 1];
};

function goBack() {
    if (history.length) {
        position += 1;

        navigateTo(history[history.length - position]);
    }
}

function goForward() {
    if (history.length) {
        position -= 1;

        navigateTo(history[history.length - position]);
    }
}

明白了吗?

基本上,我们将访问的每个页面保存在一个数组中。当我们浏览历史时,我们通过更新一个整数变量来跟踪我们在历史中的位置,该变量指示要检查历史数组中的哪个槽。

【讨论】:

  • 如何保存变量?这不只是针对 URL 的吗?
  • 你可以将任何你想要的东西压入历史数组——变量、函数、数字...
  • 当我向后移动两次时,函数如何知道它应该使用 -3 而不是 -2?同时仍然能够正常导航:s。抱歉问了 234 个问题:p
  • 不,这是一个非常有效的问题。我将编辑代码以显示如何。
  • 最后一个问题:p。这是正确的:var direction = left; history.push(方向);?它似乎对我不起作用,但它可能是别的东西:)
【解决方案2】:

这可能会有所帮助:ajax history libraries。以前从未使用过 ajax 或 javascript

【讨论】:

    【解决方案3】:

    这听起来更像是您想在 cookie 中保存一些状态,然后您可以在页面加载时随时读取。您可以将 cookie 设置为整个站点、站点的一个分支或只是一个路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多