Javascript 历史框架的经验

Posted

技术标签:

【中文标题】Javascript 历史框架的经验【英文标题】:Experiences with Javascript History Frameworks 【发布时间】:2010-10-14 00:38:09 【问题描述】:

当用户选择多个改变页面行为的选项时,我正在寻找一个 javascript 历史框架来处理页面内的导航。

页面上有多个人工制品会改变页面的数据加载,我想将其存储为一组堆叠的行为。从更广泛的意义上说,出于同样的原因,我想将此作为工具包添加到我未来的 Web 项目中。

我主要是在 ASP.NET 中使用 JQuery 编写代码,但我现在只担心 JQuery。我确实用 php、Python 和 Perl(取决于演出)编写了其他项目,所以它必须与平台无关。

我一直在网上查找并找到了一些,但只有一个(在 OReilly 上有报道)看起来符合要求。我已经开始使用它,但我想知道其他人正在使用哪些工具包以及其他人会推荐什么。

因此,如果您对历史框架、在 Ajax 中处理后退按钮(等)有任何经验,我很想听听您使用了什么以及它是如何工作的。这真的会帮助我在图书馆做出最终选择。

谢谢,

S

【问题讨论】:

【参考方案1】:

不久前我在构建一个仅限 Flash 的网站时遇到了类似的问题。我们试过了:

Really Simple History(在 safari 和 flash 的结合中出现了一些问题) ExtJS 有一个 history component 对我们非常有用。 (Demo) [此外,我们已经将此框架用于其他项目。]

【讨论】:

【参考方案2】:

也许this question 对你有用。在我链接到一个测试页的问题中,其中 location.hash 用于跟踪历史记录。我目前在测试站点中使用这种方法,并且遇到了 Opera 的问题(在问号处截断 location.hash 值,您必须使用:location.href.split(/#/)[1])当然还有 IE(需要 iframe)。在带有 iframe 的 IE 中,历史记录仅保存在当前会话中。如果您在同一窗口/选项卡中加载另一个页面并使用后退按钮返回到 AJAX 页面,则以前的历史记录将丢失。这对我来说没什么大不了的,但可能会很烦人。我知道 IE8s 的历史应该表现得像 location.hash 的预期,它甚至应该有一个 hashchange 处理程序。

我认为大多数框架都使用相同的技术(监控 location.hash 的变化,对 IE 使用 iframe)。我不想使用框架,因为我使用的是我自己的自制小框架,而常规框架包含太多我永远不会使用的功能。

【讨论】:

【参考方案3】:

jQuery History 是我的首选。可以在这里找到:http://www.balupton.com/projects/jquery-history/ 提供跨浏览器支持、绑定到哈希、重载哈希等等。

还有一个名为 jQuery Ajaxy 的 Ajax 扩展,允许它轻松地将您的网页升级为适当的 Ajax 应用程序,而无需更改服务器端并保持对 SEO 和 JS-Disabled 友好:http://www.balupton.com/projects/jquery-ajaxy/

总的来说,它们都有很好的文档记录、受支持且功能丰富。他们还在这里赢得了一个赏金问题How to show Ajax requests in URL?

【讨论】:

【参考方案4】:

Dial.js 是一个 JavaScript 浏览器历史框架,旨在为单页应用程序 (SPA) 提供带有 jQ​​uery 和 History.js 的成熟 MVC 框架的一些功能。

【讨论】:

以上是关于Javascript 历史框架的经验的主要内容,如果未能解决你的问题,请参考以下文章

为 AJAX 加载的内容操作浏览器历史记录

使用 PHP 将照片 URL 发送到 JavaScript

软工概论——1

(Vue)初识Vue

网站前端_JavaScript-项目经验.纯JavaScript实现客户端的分页功能?

Animate CC javascript 按钮不能一直工作?