1

使用以下教程,我希望我的网站使用 AJAX 加载内容(但也希望能够使用后退按钮等): http ://www.queness.com/post/328/a-simple- ajax-driven-website-with-jqueryphp

当然,如果有人禁用了 javascript,该网站也应该可以工作(没有 Ajax)。

然而,当启用 javascript 的用户向未启用 javascript 的用户发送链接时,问题就出现了。因为 javascript 被禁用,它不会正确处理 #-tag 并且只会转到主页(因此直接链接到从 javascript 用户到非 javascript 用户的页面是不可能的)。有没有办法解决这个问题(最好是 php 或 htacces)。

4

3 回答 3

2

HTML5 为我们提供了无需刷新页面即可更改 URL 的方法https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

这意味着您可以在不刷新页面的情况下更新某些内容,但仍为用户提供他们可以添加书签或发送给其他人的 url。只要您在这些位置有页面或使用 mod_rewrite 或类似方法捕获它们,这些 url 将在没有 JavaScript 的情况下工作。

https://github.com/browserstate/history.js是一个很棒的小 pollyfill,如果浏览器支持它,它将使用 HTML5 历史记录,否则(Internet Explorer)它会更改 url 的哈希值。

于 2011-09-15T10:39:54.253 回答
1

基本上,三个步骤:

  • 正常编码您的“a”标签:<a href='about'>About us</a>
  • 在您的 javascript 代码中,拦截标签click上的所有事件<a>并导航到#+ this.href。所以当他们点击上面的网址时,你导航到site.com/#about而不是site.com/about
  • 在您的 javascript 代码中,有一个计时器函数,该函数从当前位置读取哈希值并通过 ajax 加载相应的 url(删除 #)

由于您像往常一样编写 html 代码,因此非 js 用户仍然可以完全访问该站点,更重要的是,对于搜索引擎的机器人而言。

针对这些评论,我可以提出以下建议:

  • 通过javascript将您的主页从just重定向site.comsite.com/js/
  • 单击时<a href='about'>,导航到site.com/js/#about
  • 在“js”页面上,<a id=about href="/about">click here</a>为非 js 用户提供类似的东西
于 2011-09-15T10:51:34.970 回答
0

为什么不直接构建您的应用程序,然后在顶部添加 AJAX,而不是反过来为自己增加工作量?

问问自己,为什么需要 AJAX 页面转换?您的应用程序是否真的需要它们,或者仅仅是因为您在其他网站(如 Twitter)上看到过它?

于 2011-09-15T10:33:37.467 回答