【发布时间】:2014-02-11 23:18:40
【问题描述】:
我在这里使用 history.js 插件:https://github.com/browserstate/history.js/ 用于在我的应用程序中处理 HTML5 历史记录。我想处理 both HTML5 和 HTML4 版本(使用哈希回退)。
您可以在此处查看演示:http://dev.driz.co.uk/history45/
问题 1
当一个人访问带有哈希值的 url(没有点击网站上的链接)时,我如何根据哈希值加载正确的内容,因为服务器不理解代码是什么,而我不知道不想通过检查哈希是否存在然后通过 AJAX 调用内容来使请求加倍。例如:http://dev.driz.co.uk/history45/#about.php 不会加载 about.php 内容。
更新:
我在这里看到了一些示例:https://gist.github.com/balupton/858093 这似乎涵盖了加载正确的内容(甚至是优化版本)。但我正在努力让它与我的 HTML5 版本结合使用。查看源代码:http://dev.driz.co.uk/history45/ 并且它仅在用户单击链接时运行,而不是在页面加载时运行,这是原始问题。
更新 2:
在这里尝试了一个示例:http://dev.driz.co.uk/history4/#/contact.php 使用源代码中的 sn-p 获取要加载到 contact.php 内容中的内容,但不起作用...?但根据此处的文章:https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling#wiki-why-the-hashbang-is-unnecessary 此代码应该是 AJAX 加载正确的内容,如果它有一个哈希值。任何想法为什么?
问题 2
如何在根目录上强制使用/#/ 并在所有网址前加上`#/'
目前,如果您尝试通过 HTML4 浏览器中的链接访问页面,您最终会得到奇怪的 url,例如:
http://dev.driz.co.uk/history45/#contact.php 和 http://dev.driz.co.uk/history45/#./
代替:
http://dev.driz.co.uk/history45/#/contact.php 和 http://dev.driz.co.uk/history45/#/
如果我从内页开始:
http://dev.driz.co.uk/history45/contact.php 并选择一个链接,然后我最终得到:http://dev.driz.co.uk/history45/contact.php#about.php,它应该是:http://dev.driz.co.uk/history45/#/about.php
【问题讨论】:
标签: javascript jquery html history.js