2011-09-15 18 views
1

使用下面的教程我希望我的网站使用AJAX来加载内容(但也希望能够使用后退按钮等等等): http://www.queness.com/post/328/a-simple-ajax-driven-website-with-jqueryphp拨打# - 标记的JavaScript链接字非JavaScript的

Ofcourse,如果有人已禁用的网站也应该工作的JavaScript(不阿贾克斯)。当启用javascript用户发送一个链接到非启用JavaScript的用户

问题不过来。因为javascript被禁用,它不会正确处理#标签,并且只会进入主页(所以直接链接到从javascript用户到非javascript用户的页面是不可能的)。有没有办法解决这个问题(最好是php或htacces)。

+1

对你的问题不是一个真正的答案n,但我通常只是忽略JavaScript禁用的一次一个蓝月亮用户的效果。别担心他们。思考JavaScript禁用的用户与优化您的Netscape Navigator代码毫无意义。 –

+0

@stereofrog,是的,这就是为什么你写语义标记。这和基于文本的浏览器和可访问性。 –

+0

在没有JavaScript的情况下使用网络浏览器的真实用户担心仍然毫无意义。 (当然是移动的例外,但通常你会为手机改变很多)。 –

回答

2

HTML5给我们的方法来改变URL而无需刷新页面https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

这意味着您可以更新一些不需要刷新页面,但仍然给用户一个URL,他们可以书签或发送给其他人。这些网址只要在这些位置有页面,或者使用mod_rewrite或类似网页捕获,就可以在没有JavaScript的情况下运行。

https://github.com/browserstate/history.js是一个伟大的小pollyfill将使用HTML5历史的东西,如果浏览器支持它,否则(Internet Explorer)它会改变URL的散列。

0

为什么不建立自己的应用程序,通常然后添加AJAX之上,而不是围绕走另一条路,并造成更多的工作,为自己?

问自己,为什么你需要AJAX页面转换?请问您的应用程序实际上需要他们,还是仅仅因为你已经看到了它在其他网站,如Twitter?

+0

他在他的问题中表示,该网站也应该在没有AJAX的情况下工作,这是他试图添加的额外功能,他问如何使其工作。 – Kokos

+0

我读到他正在创建一个网站,并希望从一开始就能够使用这个功能,但在我看来,他的做法是错误的,并且过多地关注URL中存在的散列字符。根据定义,带有散列的URL是片段标识符;也就是说,对于页面的**片段**,而不是单个页面本身。 –

1

基本上,三个步骤:

  • 代码的 “一” 的标签只是正常的:<a href='about'>About us</a>
  • 在JavaScript代码
  • ,拦截上<a>标签的所有click事件并导航到# + this.href。因此,当他们点击上面的网址,您导航到site.com/#about而不是site.com/about在JavaScript代码
  • ,有一个定时器功能,读取散列值形成的当前位置,并通过AJAX
  • 加载相应的URL(以#删除)

既然你的代码的HTML只是像往常一样,该网站仍然对非js的用户完全访问,更重要的是,对于搜索引擎的机器人。

在回应的意见,我可以建议如下:

  • 通过javascript从刚刚site.com重定向您的主页site.com/js/
  • 点击<a href='about'>时,浏览到site.com/js/#about
  • 的“JS “页面,有类似于非js用户的<a id=about href="/about">click here</a>
+1

这并不能解决启用js的用户将链接发送给非js用户的问题 –

+0

我很确定你所描述的已经是他正在做的事情(实际上我是100%确定的,因为我坐在他旁边),如果他转到“site.com /#about”(如果可能的话),问题是将非js用户重定向到正确的页面。 – Kokos