多页与单页和不引人注目的Javascript

Und*_*ion 10 html javascript navigation unobtrusive-javascript ujs

我有一个网站的一部分,有多个类别的Widget.每个类别名称都有一个菜单.对于启用了Javascript的任何人,单击类别会显示页面中类别的内容.他们可以随意点击类别,看到DOM根据需要更新.该网址也使用标准哈希/ hashbang进行更新(如果我们对Google友好).因此,对于有人谁的土地上example.com/widgets,他们可以浏览周围example.com/widgets#one,example.com/widgets#two,example.com/widgets#three等.

但是,为了支持用户代理没有启用Javascript,以下分类链接中的一个必须加载新的页面中显示的类别,所以有人没有启用javascript,他们会浏览到example.com/widgets/one,example.com/widgets/two,example.com/widgets/three等.

我的问题是:启用Javascript的人登陆其中一个URL 时会发生什么?例如,登陆时,应该向具有Javascript功能的提供什么example.com/widgets/one?他们应该被重定向到example.com/widgets#one吗?

请注意,对于启用了Javascript的任何人,我需要单页网站体验,但我想要一个没有JavaScript的用户代理的多页网站.任何没有解决这个问题的答案都没有回答这个问题.我对hashbangs或单页面网站与多页面网站的优点或问题不感兴趣.

Gar*_*ens 6

这就是我构建它的方式:

使用HistoryJS管理URL.JS pushstate浏览器获得了完整正确的URL,JS非pushstate浏览器获得了散列网址.非JS用户通过页面重新加载正常访问完整的URL.

当用户点击链接时:

如果他们有JS: 所有对其他页面的点击都由阻止默认操作的函数处理,抓取HREF并将URL传递给ajax请求并同时更新URL.然后解析该ajax请求的http响应,然后将其加载到内容区域中.

非JS: 页面正常刷新并加载整个文档.

页面加载时:

使用JS:将事件处理程序附加到所有链接以防止默认值,以便通过Ajax处理它们的href.

没有JS:没什么.允许锚点正常工作.

我认为您应该通过完整,正确的URL访问所有内容,然后通过ajax加载它,然后更新URL以反映您从中获取内容的地址.这样,当JS没有运行时,您不必更改任何内容.

你是这个意思吗?