2014-11-22 185 views
0

刚刚进入网络编程,当谈到导航时,到目前为止,我更喜欢使用Javascript和AJAX请求来改变菜单链接点击时的内容。它速度很快,没有页面刷新,很棒。唯一的问题是该网站的网址始终保持不变。例如,我不能将某人链接到“关于”页面。解决这个问题的标准方法是什么? 我目前只使用HTML,JavaScript和jQuery。使用AJAX进行可链接导航?

+0

实现一个“正确”的页面结构,它首先不需要AJAX,然后只把AJAX放在最上面。搜索引擎也会更好。而HTML5 History API有助于在地址栏中更改可见的URL。 – CBroe 2014-11-22 01:45:47

回答

1

通常你会用一个二方法。取决于您需要支持的一组浏览器:

更改哈希值 - 您可以在不重新加载页面的情况下更改网址(http://.../index.html#about-page)的哈希部分。因此,举例来说,当你点击“关于”链接,就可以设置URL的哈希值与类似这样的东西:

window.location.hash = 'bla-bla'; 

当你的页面加载,你解析散列部并进行必要的逻辑:

if (window.location.hash === 'about-page') { 
    // ... 
} 

另一种方法是使用“历史API” - 在现代浏览器中,你可以使用一个叫做“历史API”的API,它允许您更改浏览器的历史记录,包括URL。您可以使用该history对象上调用pushState方法,例如:

window.history.pushState({ event: 'event-id' }, "Event Title", "?event=event-id"); 

进一步的细节,你可以看到一个以前的答案我已经张贴在过去: How to manage browser "back" and "forward" buttons when creating a javascript widget

+0

谢谢,我会研究。看起来历史API比较灵活,因为您还可以与用户前进/后退一起工作,但代价是不适用于旧版浏览器? – 2014-11-22 02:50:19

0

真的取决于你使用的框架。这始终是JSF的经典批评,它与使用Put请求作为其通信方法的一部分具有相同的效果。他们在以后的版本中提出了一些改变。

但是,是否有标准的方法很难说,毫不含糊。我已经在策略上看到了Put请求。这会改变网址,但它是你完全避免的提交。

一些JavaScript库允许你自己修改网址。我不记得我们使用了哪些。

在任一CAE您的应用需要满足此深导航,因为你给用户直接移动到页面的能力,他们可能没有能够事先

+0

YUI库是我过去用来编辑浏览器网址的网页。虽然已经有一段时间了。有可能有更好的工具 – EdH 2014-11-22 01:57:30