1

我只是找不到令人满意的方式来处理浏览器的历史记录。当然有像History.js这样可爱的插件,它适用于较小的东西。但是让我举个例子:

我有一个多页表单,要求用户提供不同的东西。每次提交到下一页后(其实也一样,只是根据 HTTP-POST 变量改变视图),页面上有一些动画和变化:

  • 主要内容更改为下一个表单(带有slideUp/slideDown)
  • 进度条用动画改变它的状态
  • 在此栏下方,有关某些输入的一些信息淡入

所以现在这很基本,但我已经在苦苦挣扎,因为所有动画(最后两部分)在每个状态(不同的 div,不同的输入源)上都是不同的,我不知道如何让它们如此通用,我不必单独指定它们。

不过我可以忍受,但是当用户点击后退按钮时,我必须再次重新定义所有这些动画(反向)。内容加载肯定没问题,它基本上只是用 ajax-load 重新加载文件:

  • pushstate将输入数据作为stateObjon submit执行
  • 所以我可以在绑定的“statechange”事件中执行内容加载

尽管如此,其余的让我发疯。

4

4 回答 4

2

我强烈推荐学习 Backbone.js。它与 jQuery 配合得很好,并以修改后的 MVC 模式设置您的网站。它还有一个很好的系统来处理 URL 更改和执行适当的代码。

至于滑动,如果你想反转动画,跟踪起来可能有点麻烦。当我在屏幕之间滑动时,我对我的应用程序所做的不是有时向上滑动,有时向下滑动,而是总是移动我正在滑动到的 DOM 中的元素,以便它位于我从中滑动的元素之后。这样幻灯片总是朝着同一个方向前进,我的动画就不会变得愚蠢。

于 2011-12-25T17:21:59.353 回答
1

您可以尝试JavaScriptMVC,其中包括 jQuery。不确定它是否满足您的确切要求,但它是 JavaScript 和 MVC ......

于 2011-12-25T17:18:01.003 回答
0

虽然不是很严格的 MVC(其中有几个用于 JavaScript),但我认为主干 js是一个很棒的框架,它基于 MVC 的概念,但经过重新设计以更好地适应 JavaScript 语言和环境。

于 2011-12-25T17:20:15.210 回答
0

好吧,经过大量的折腾,我决定降级为解决我的问题的最简单和最好的解决方案:使用基础知识。

当用户点击后退/前进按钮时,我没有对所有内容进行后退/前进动画,而是使用 ajax 重新加载了整个站点,因此我可以将 HTML/PHP 后备与所选站点的 stateObj 一起使用。

History.js 的问题在于它无法区分 onstatechange 事件中的 pushState 和后退/前进按钮。所以我从 History.js 降级为带有 pushstate 的标准 W3C 行为。1.8.0 的更新将允许区分内部和外部状态更改。

感谢所有答案,但我想这是处理它的最准确方法,而单独使用 MVC 并不能解决问题 - 为什么我不接受任何其他答案!

于 2012-01-13T13:41:14.073 回答