在导航期间停止刷新内容?

时间:2013-02-01 04:33:19

标签: javascript ajax facebook api history

我已经看到有几个网站这样做,即Facebook的聊天窗口,或Reverbnations音乐播放器,我想知道是否有人可以指点我如何实现它的任何教程?

干杯。

2 个答案:

答案 0 :(得分:0)

Facebook的JavaScript是如此庞大和模糊,我认为没有人会在他们的工作中找到任何东西。你唯一的机会就是Facebook开发人员会回答这个问题。

您始终可以使用JavaScript检查功能并提供后备(例如location.hash或普通旧的整页刷新)。 Modernizr是一个使特征检测变得容易的框架。

也就是说,有些框架提供了使用History API的简便方法。其中一个,可以说是最突出的,是History.js,它为不支持History API的浏览器提供了跨浏览器功能和适当的回退。

There's also a plugin for History.js and jQuery可以让您'ajaxify'您的网站。

检查历史记录API支持:

if(window.history && history.pushState)
{
    // History API supported.
}
else
{
    // Provide fallback (location.hash, etc.)
}

使用Modernizr:

if(Modernizr.history)
{
    // History API supported.
}

答案 1 :(得分:0)

为什么聊天窗口无法在导航中清除的答案:当您在Facebook上冲浪时,没有页面刷新。大多数情况下,Javascript用于更改显示的内容。

当您以编程方式更换内容以提供浏览印象时,浏览器实际上不再导航到新位置。地址栏不会改变,后退按钮也不会重做任何步骤。

这就是HTML5 history API开始的时候。它允许手动管理历史项目,这样当你浏览Facebook中的不同页面时,就会创建一个新的历史项目。这告诉浏览器启用后退按钮,单击后退按钮将触发您需要处理的事件。此外,历史记录API将允许您更改浏览器的地址栏(理想情况下,如果您实际请求该URL,则会将您带到完全相同的内容)。

虽然current browser support看起来很不错,但您可以使用location hash添加后备广告。