我找不到令人满意的方式来处理浏览器的历史记录。当然有像History.js这样的可爱插件,适用于较小的东西。但是,让我举个例子:
我有一个多页面的表单,要求用户提供不同的东西。每次提交到下一页(实际上相同,它只是根据HTTP-POST变量更改视图)后,页面上会有一些动画和更改:
所以这是非常基本的,但我已经在苦苦挣扎,因为所有的动画(最后两部分)在每个状态(不同的div,不同的输入源)都是不同的,我不知道如何制作它们如此通用,我不必分开指定它们。
虽然我可以忍受,但是当用户按下后退按钮时,我必须再次重新定义所有这些动画(相反)。内容加载肯定没问题,它基本上只是用ajax-load重新加载文件:
pushstate
,输入数据为提交时的stateObj
如上所述,其余的让我感到疯狂。
答案 0 :(得分:2)
我强烈建议抓住并学习Backbone.js。它与jQuery配合使用,并以修改后的MVC模式设置您的网站。它还有一个很好的系统来处理URL更改和执行适当的代码。
至于滑动,如果你想要反转动画,那可能会有点难以跟踪。当我在屏幕之间滑动时,我对我的应用程序做了什么而不是有时向上滑动,有时向下滑动,我总是将元素移动到我滑动的DOM中,以便它在我滑动的元素之后。那样幻灯片总是朝着同一个方向前进,而我的动画也不会让所有人都高兴。
答案 1 :(得分:1)
您可以尝试JavaScriptMVC,其中包括jQuery。不确定它是否符合您的确切要求,但它是JavaScript和MVC ......
答案 2 :(得分:0)
虽然不是非常严格的MVC(其中有几个用于JavaScript)我认为backbone js是一个很好的框架,它基于MVC的概念,但是重新设计以更好地适应JavaScript语言和环境
答案 3 :(得分:0)
经过大量的抨击,我决定为我的问题降级为最简单和最好的解决方案:使用基础知识。
当用户点击后退/前进按钮时,我不是向后/向后动画所有内容,而是使用ajax重新加载整个站点,这样我就可以使用所选站点的stateObj进行HTML / PHP回退。
History.js的问题是它无法区分onstatechange事件中的pushState和back / forward按钮。因此,我使用pushstate从History.js降级到标准的W3C行为。将有1.8.0的更新,允许区分内部和外部状态变化。
感谢所有答案,但我想这是处理它的最准确方法,而单独使用MVC并不能解决问题 - 为什么我不接受任何其他答案!