Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX和浏览器后退按钮_Javascript_Html_Ajax_Navigation - Fatal编程技术网

Javascript AJAX和浏览器后退按钮

Javascript AJAX和浏览器后退按钮,javascript,html,ajax,navigation,Javascript,Html,Ajax,Navigation,我在www.darknovagames.com上运行一个基于浏览器的游戏。最近,我一直在用CSS重新格式化这个网站,试图让它的所有页面按照HTML标准进行验证 我一直在考虑将导航菜单放在页面的左侧(而不是每次将用户带到单独的页面,需要重新加载标题和导航栏,这几乎永远不会改变),我知道如果这样做,我可能会破坏浏览器中的前进/后退按钮。我想我的问题是,我应该继续使用AJAX来创建网站,从而要求用户使用网站导航来玩游戏,还是应该让网站保持现状,使用标准的超链接和其他东西进行导航 我问这个问题的原因我想

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

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

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

我也愿意接受建议。是否有一种标准的(最好没有传统的框架)方法,可以只重新加载站点的主体区域,同时仍然更改URL,以便用户可以添加书签和转发/返回等?这也有可能解决我的问题。我只是在问最好的解决方案,而不是具体问题的答案^_^


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

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

例如,gmail的外观如下:

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


过去的一切都是通过ajax进行的页面状态更改。如果我按Back,我将再次进入收件箱(再次,没有其他浏览器进入)

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

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


不过,在解决这个问题方面做得很好,有很多网站只是继续使用AJAX,甚至没有考虑这个问题

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


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

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


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

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

当你把所有的功能都放到AJAX调用和回调中时,你基本上是在强迫你的用户进入一条路径来访问他们想要的功能和内容——这完全违背了web的功能。人们依靠地址栏和后退按钮。如果您覆盖所有链接,使您的站点本质上是一个只通过AJAX更新的页面,那么您就限制了用户浏览站点并找到所需内容的能力。它也会阻止你的用户分享他们发现的东西(这是问题的一部分,对吧?)

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

把你的网站分成每一个重要的功能(例如,搜索、主页、个人资料、游戏——这将取决于你的网站的内容)。只要你链接到这些页面,就可以通过常规链接和静态URL进行链接

阿贾克斯很好。但它的艺术在于知道何时使用,何时不使用。如果您继续使用我在上面绘制的模型,您的用户将非常感激。

请查看。wiki已经有10个月没有更新了,但我刚刚参加了2008年的Ajax体验,在上面看到了Brian Dillard的一篇文章。他说0.8码在他的硬盘上。希望它很快就能下载。

另一个解决方案:

这似乎是最好的一个,与JQuery&Mootools一起使用

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