34

我在 www.darknovagames.com 运行基于浏览器的游戏。最近,我一直在努力用 CSS 重新格式化网站,试图让它的所有页面都根据 HTML 标准进行验证。

我一直在玩弄这个想法,即在左侧 AJAX 页面中使用导航菜单(而不是每次将用户带到单独的页面,需要重新加载标题和导航栏,这几乎永远不会改变)我知道如果我这样做,我可能会破坏浏览器中的前进/后退按钮。我想我的问题是,我应该继续对网站进行 AJAX 处理,从而要求用户使用网站导航来玩游戏,还是应该让网站保持现状,并使用标准超链接和其他东西进行导航?

我问的原因是我在网站中建立了一个论坛系统,很多时候我想链接到论坛中的特定主题。

我也愿意接受建议。是否有一种标准(最好没有传统框架)方式来仅重新加载站点的主体区域,同时仍更改 URL 以便用户可以添加书签和前进/后退等?这也可能解决我的问题。我只是在这里寻求最佳解决方案,而不是特定问题的答案。^_^

谢谢

4

8 回答 8

35

将 ajax 用于需要更新的页面部分,而不是整个页面。为此,您应该使用模板。

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

例如,gmail 看起来像这样:

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

# 之后的所有内容都是通过 ajax 发生的页面状态更改。如果我按返回,我将再次进入收件箱(同样,没有其他浏览器 GET)

于 2008-10-02T17:48:10.893 回答
29

如果您要启用 AJAX,请不要以您网站上每个重要页面的可访问 URL 为代价。这是人们可以使用的可导航站点的支柱。

当您将所有功能都放入 AJAX 调用和回调中时,您基本上是在强迫您的用户使用单一路径来访问他们想要的功能和内容——这完全违背了 Web 的功能。人们依赖地址栏和返回按钮。如果您覆盖所有链接,从而使您的站点本质上是一个仅通过 AJAX 更新的页面,那么您将限制用户浏览您的站点并找到他们需要的内容的能力。它还阻止您的用户分享他们发现的内容(这是重点的一部分,对吗?)。

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

将您的网站分解为每个重要功能(即搜索、主页、个人资料、游戏——这将取决于您的网站的全部内容)。在您链接到这些页面的任何地方,都可以通过常规链接和静态 URL 进行链接。

AJAX 很好。但它的艺术在于知道何时使用它,何时不使用它。如果你坚持我上面勾勒的模型,你的用户会很感激的。

于 2008-10-02T18:01:41.467 回答
5

查看真正简单的历史。wiki 已经有 10 个月没有更新了,但我只是在 Ajax Experience 2008 上看到了Brian Dillard 的演讲。他说 0.8 代码在他的硬盘上。希望它很快可以下载。

于 2008-10-02T18:09:08.657 回答
4

另一种解决方案:

AJAX 分页和返回按钮

这似乎是最好的,与 JQuery 和 Mootools 一起使用。

于 2012-01-13T13:42:45.227 回答
2

有很多方法可以使用时髦的 Javascript 技术解决这个问题,通常涉及 iframe,但我认为在这种情况下,您需要质疑为什么要使用 AJAX。它真的会让网站更容易为用户使用吗?在我看来,您使用它是因为您认为它很酷(这本身并不总是一件坏事),而不是因为它实际上会为您的访问者增加任何价值。在任何普通网站上,普通的超链接文档几乎总是适合主导航。它是人们所期望的,我不建议您根据一些花哨的技术四处打破这些期望。

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

虽然很好地解决了这个问题,但那里有很多网站只是继续使用 AJAX,甚至不考虑这个!

于 2008-10-02T17:50:07.017 回答
2

试试这个简单轻量的 PathJS库。它允许将侦听器直接绑定到锚点。

例子:

Path.map("#/page").to(function(){
    alert('page!');
});
于 2012-04-19T18:02:30.440 回答
1

正是由于您描述的原因,AJAX 并不是导航的最佳解决方案。与破坏浏览器导航 UI 的麻烦相比,重新加载标题和导航栏的影响很小。

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

于 2008-10-02T17:51:01.680 回答
0

我会坚持使用简单的超链接。您的页面家具不应占 HTML 的很大一部分,因此将其排除在页面请求之外并不是什么大胜利。使每个资源都可寻址(即用户可能感兴趣的每一位内容的 URL)是 Web 的一个关键设计特征。这意味着缓存可以工作,并且意味着用户可以共享书签。它使 Google 以及社交书签网站都能正常工作。

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

于 2008-10-02T17:54:05.433 回答