我在php中创建一个Web应用程序。我正在通过基于ajax的请求加载内容。 当我点击超链接时,相应的页面将通过ajax获取,内容将被获取的页面替换。
现在的问题是,我需要一个物理href,以便我可以实现类似facebook的功能,还可以维护浏览器历史记录属性。我不能做一个旧学校POSTBACK到php页面,因为我正在做一个过渡动画,当前页面滑开,新页面滑入。
有没有办法可以保留动画并且仍然有一个有效的物理href和历史记录。
应用程序的设计是这样的:
答案 0 :(得分:4)
虽然Alexander的答案在客户端很有效,但Facebook的linter工具不运行javascript,因此它将获得旧内容。这两个链接都没有提供解决方案。
需要实现的是服务器端解析url。见http://www.php.net/manual/en/function.parse-url.php。片段是服务器看作哈希标记值的内容。在您的PHP代码中,根据片段呈现正确的og:标签。
答案 1 :(得分:2)
首先,如果你需要一个facebook的URL,那么想一个给你一个的结构,这样你的服务器端代码就会在给出那个URL时加载正确的页面。这可能类似于http://yourdomain.com/page.php?feed=<feedname>&link=<linknumber>
,它允许您使用PHP $_GET
数组检查参数。如果您没有参数,则加载索引页面;如果你这样做,那么加载相关的文章。
其次,使用类似history.js的内容为您提供HTML5 pushState()
功能的跨浏览器支持,以便您在执行AJAX调用时设置页面URL,而无需浏览器执行完全重装。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您正在使用jQuery,我可以推荐使用烧录进行哈希导航:
答案 4 :(得分:0)
这听起来对我很直接。 你有像往常一样的网址,使用hash(#)你可以在客户端和服务器端提取信息。
在返回内容之前,只有一件事在服务器端丢失,检查用户代理字符串并将其与facebook bot进行比较(如果我没有弄错它就像“facebookexternalhit”),如果事实证明,它是facebook bot然后返回你想要的东西,它描述了like / share(开放图元数据)的url,如果它是任何其他用户代理字符串像往常一样返回内容。