2008-10-02 213 views
32

我在www.darknovagames.com上运行基于浏览器的游戏。最近,我一直在努力用CSS重新格式化网站,试图根据HTML标准来验证其所有页面。AJAX和浏览器后退按钮

我一直在玩这个想法,让左侧的AJAX导航菜单位于页面中(而不是每次都将用户带到单独的页面,需要重新加载标题和导航栏,这几乎从不改变),我知道如果我这样做,我可能会在浏览器中打破前进/后退按钮。我想我的问题是,我应该继续AJAX网站,因此要求用户使用网站导航来玩游戏,还是应该离开网站,并使用标准超链接和导航内容?

我问我推测的原因是我建立了一个论坛系统进入该网站,很多时候我想链接说在论坛内的一个特定主题。

我也乐于提供建议。有没有一个标准(最好没有传统的框架)的方式来使网站重新加载的身体区域,同时仍然改变网址,以便用户可以书签和前进/后退等?这也有可能解决我的问题。我只是要求最好的解决方案,而不是对特定问题的回答。^_^

感谢

回答

26

如果您打算启用AJAX,请不要在网站上的每个重要页面都有可访问的网址的情况下执行此操作。这是人们可以使用的可导航网站的支柱。

当您将所有功能都铲除到AJAX调用和回调函数中时,基本上迫使您的用户进入一条访问他们想要的功能和内容的路径 - 这完全违背了Web的功能。人们依靠地址栏和后退按钮。如果您覆盖所有链接,以便您的网站本质上是只通过AJAX更新的单个页面,则会限制用户浏览网站并找到所需内容的能力。它也会阻止你的用户分享他们发现的东西(这是关键的一部分,对吧?)。

想想用户的网站的心理地图。如果他们知道他们是通过主页进入的,那么他们会去搜索某些东西,然后他们登陆游戏页面,然后他们开始玩特定的游戏,这是用户采取的四个不同的行动单位。他们可能在每个页面上都做了其他一些更小,更微不足道的行为 - 但这些是主要单位。当他们点击返回按钮时,他们应该期望回到他们进入的路径。如果您通过AJAX调用加载所有这些页面,则会提供一个功能与用户所期望的功能相反的网站。

将您的网站分成每个重要功能(即搜索,家庭,个人资料,游戏 - 它将由您的网站的所有内容决定)。在链接到这些页面的任何地方,请通过常规链接和静态URL进行操作。

AJAX很好。但它的艺术是知道什么时候使用它,什么时候不使用。如果你坚持我上面勾画的模型,你的用户会很感激。

34

对于需要更新,而不是整个事情的部分页面使用AJAX。为此,你应该使用模板。

如果您仍想保留页面上各种状态更改的后退按钮,请将它们与#achors组合以更改网址(不会强制浏览器发出另一个GET)。

例如,Gmail的是这样的:

mail.google.com/#inbox/message-1234

一切都会过去的#是一个页面的状态变化通过AJAX所发生。如果我按回来,我会再次进入收件箱(再次,没有另一个浏览器GET)

+0

真棒提示...谢谢。 – dacracot 2008-10-02 18:22:09

2

有很多方法解决这个问题,使用时髦的Javascript技术,通常涉及iframe,但我认为在这种情况下,你需要质疑为什么你使用AJAX。它实际上是否会让用户更容易使用该网站?这听起来像你使用它,因为你认为它很酷(本身并不总是一件坏事),并不是因为它实际上会为访问者增加任何价值。从任何普通的网站,正常的超链接文档几乎总是正确的主导航。它是人们所期望的,我不会推荐你去打破基于某些奇特技术的期望。

AJAX很棒,可以让你做很多很棒的事情,改变一个网站导航不是其中之一。

虽然在这个问题上做得很好,但是有很多网站只是继续使用AJAX,并没有考虑到这个问题!

+0

该网站此刻已经在使用AJAX。它是一款浏览器游戏,每隔15分钟就会在服务器上更新每个人的统计信息,因此根据他们所在的页面,我在新信息中使用AJAX,因此该页面已经准确无误。 – 2008-10-02 17:54:23

+0

因此,您已经在绝对有意义的地方使用它,我不认为以这种方式扩展它也是有意义的。 – roryf 2008-10-02 18:14:31

1

对于您所描述的原因,AJAX不是导航的最佳解决方案。与打破浏览器导航UI的麻烦相比,重新加载标题和导航栏的命中率很低。

AJAX更合适的例子是允许用户在主窗口中玩游戏,同时他们可以浏览导航窗格中的其他内容列表。您可以通过AJAX在导航窗格中加载其他项目,而不会影响游戏玩法。

0

我会坚持简单的超链接。你的页面家具不应该占HTML的很大一部分,所以它不是一个很大的胜利,从页面请求中排除它。使每个资源可寻址(即用户可能感兴趣的每一位内容的URL)是网络的关键设计特征。这意味着缓存可以工作,并且意味着用户可以共享书签。它使谷歌工作,以及社会书签网站。

在我看来,削减后续页面更改中的几个HTML字节是不值得的。

5

结账reallysimplehistory。维基百科尚未更新10个月,但我只是在2008年阿贾克斯体验中看到布赖恩迪拉德的presentation。他说0.8代码在他的硬盘上。希望它很快就会下载。

2

哟可能想看看; “真正简单的历史”通过布拉德纽伯格...

2

试试这个简单的&轻量级PathJS lib。它允许将监听器直接绑定到锚点。

例子:

Path.map("#/page").to(function(){ 
    alert('page!'); 
});