AJAX和浏览器后退按钮
我在www.darknovagames.com上运行了基于浏览器的游戏。最近,我一直在努力使用CSS重新格式化该网站,试图让其所有页面都根据HTML标准进行验证。
我一直在想着要在页面左侧放置AJAX导航菜单的想法(而不是每次都将用户带到单独的页面,而是需要重新加载标题和导航栏,而这几乎是不会改变的),我知道如果这样做,我可能会破坏浏览器中的"前进/后退"按钮。我的问题是,我应该继续使用AJAX网站,从而要求用户使用网站导航来玩游戏,还是应该离开网站目前的位置,并使用标准的超链接和东西进行导航?
我想问的原因是我在站点中构建了一个论坛系统,很多时候我想将发言链接到论坛中的特定主题。
我也乐于接受建议。是否有一种标准的方法(最好是没有传统框架的方法)仅重新加载网站的正文区域,同时仍更改URL,以便用户可以添加书签以及前进/后退等?那也有可能解决我的问题。我只是在这里寻求最佳解决方案,而不是对特定问题的答案。 ^ _ ^
谢谢
解决方案
对于页面中需要更新的部分,而不是整个页面,请使用ajax。为此,我们应该使用模板。
当我们仍要保留页面上各种状态更改的返回按钮时,请将其与achors结合使用以更改url(而不必强制浏览器发出另一个GET)。
例如,gmail看起来像这样:
mail.google.com/#inbox/message-1234
过去的所有事情都是通过ajax进行的页面状态更改。如果按"返回",我将再次转到收件箱(同样,没有其他浏览器GET)
有很多使用时髦的Javascript技术解决此问题的方法,通常涉及iframe,但是我认为在这种情况下,我们需要质疑为什么要使用AJAX。实际上是否会使网站更易于用户使用?在我看来,我们在使用它是因为我们认为它很酷(它本身并不总是一件坏事),而不是因为它实际上会为访问者增加任何价值。在任何普通的网站上,普通的超链接文档几乎都是主要导航的正确选择。人们期望的是它,我不建议我们基于某些新颖的技术打破这些期望。
AJAX很棒,可以让我们做很多很棒的事情,更改网站导航并不是其中之一。
尽管在解决这个问题上做得很好,但是有很多站点都在使用AJAX进行开发,甚至不用考虑这一点!
正是由于我们所描述的原因,AJAX并不是最佳的导航解决方案。与破坏浏览器的导航UI的麻烦相比,重新加载标题和导航栏所付出的努力是最小的。
AJAX的一个更合适的示例是允许用户在主窗口中玩游戏,同时他们可以浏览导航窗格中其他内容的列表。我们可以通过AJAX在导航窗格中加载其他项目,而不会影响游戏玩法。
ID坚持使用简单的超链接。页面家具不应该占HTML的很大一部分,因此从页面请求中排除它并不是一个大赢家。使每个资源都具有可寻址性(即用户可能感兴趣的每一位内容的URL)是网络的一项关键设计功能。这意味着缓存可以工作,并且意味着用户可以共享书签。它使Google以及社交书签网站都可以使用。
我认为,从后续的页面更改中删除几个HTML字节是不值得的。
如果我们要启用AJAX,则不要以使网站上每个重要页面都具有可访问URL的代价为代价。这是人们可以使用的可导航站点的骨干。
当将所有功能都应用到AJAX调用和回调中时,基本上是在迫使用户进入一条单一的路径来访问他们想要的功能和内容,这完全与Web的工作方式背道而驰。人们依靠地址栏和后退按钮。如果我们覆盖所有链接,从而使站点实质上是仅通过AJAX更新的单个页面,则将限制用户导航站点和查找所需内容的能力。这也使用户无法共享他们发现的内容(这很重要,对吧?)。
考虑用户对我们网站的思维导图。如果他们知道他们是通过主页进入的,则他们去寻找东西,然后登陆游戏页面,然后开始玩特定的游戏,这是用户采取的四个不同的操作单元。他们可能在每个页面上都做了其他一些较小的,微不足道的操作-但是这些是主要单元。当他们单击"后退"按钮时,他们应该期望返回到其进入的路径。如果要通过AJAX调用加载所有这些页面,那么我们将提供一个其功能与用户期望相反的网站。
将网站分解为每个重要功能(例如,搜索,首页,个人资料,游戏-这取决于我们网站的全部内容)。链接到这些页面的任何地方,都可以通过常规链接和静态URL进行。
AJAX很好。但是它的艺术在于知道什么时候使用它,什么时候不使用。如果我们遵循我上面概述的模型,那么用户将不胜感激。
签出真正简单的历史。 Wiki已有10个月没有更新,但我只是在Ajax Experience 2008上,看到Brian Dillard的介绍。他说0.8代码在他的硬盘上。希望它将很快可以下载。
我们可能想退房;布拉德·诺伊伯格(Brad Neuberg)的"真正简单的历史" ...
如果我们愿意尝试一下jQuery,那么本教程可能会有所帮助。