0

我没有自己的“想法”。

我有一个专辑查看器。当您单击下一步时,我希望地址栏与它一起挂起,例如,如果您从 ?photoid=1 开始,然后单击下一步(下一张图片附加和内容),然后我希望它说 ?photoid=2。

现在我不能让它说 ?photoid=2 而不改变/操纵,而这你不能没有 HTML5。

我已经用 HTML5 制作了一个可以正常工作的脚本,但是我需要照顾那些没有 HTML5(只有 chrome、ff4 等支持 html5)的脚本(https://developer.mozilla.org/en /DOM/Manipulating_the_browser_history )

我想添加 #photoid=2 所以, ?photoid=1#photoid=2 然后检查 # 中是否有任何内容,然后使用它而不是 $_GET .. 但显然你不能这样做,因为 # 是客户端处理的,从不发送到服务器。

那我该怎么办?

有什么建议可以解决这个问题吗?我检查了 facebook,他们对 IE 用户做了什么,我可以听到它“点击”了两次(来自 IE 的恼人点击声)。第一次是进入下一张图片,第二次点击声改变了地址栏?! (如何?)。

然后我还想,嘿,html5 仅在 ff4 中受支持,而我得到了 ff3.6,当您浏览专辑照片时,它们会操纵地址栏 url,就像我想要的那样(以及我写的东西,但它仅适用于 Chrome 和 ff4..?)。他们怎么能那样做?

4

2 回答 2

1

哈希是在不自动刷新您所在页面的情况下更改 url 栏的唯一方法。这就是为什么它在历史上是一个锚标签(哈希)。其他所有内容都会告诉您的浏览器转到不同的页面。如果您不希望它转发,请输入一个哈希值,然后使用 javascript 读取该哈希值并以这种方式执行您想要的操作。使用 jQuery 很容易,或者如果您想使用浏览器的后退/前进按钮来查看历史状态,您可以深入研究 Asual 的 swf 地址 js 库jQuery 的 Hash Tag Change Listener插件。

于 2011-01-16T21:54:24.820 回答
0

我不太确定您的理解是否完全正确,但这是我为类似问题提出的建议。

你为什么不只是通过编辑 location.hash 来设置 url,就像你说的让它看起来像这样:www.mydomain.com/photos/#photoid=2

现在,当有人调用此 url 时,浏览器将尝试加载 www.mydomain.com/photos/ 并将获得必要的标记,但不会获得照片,您现在可以做的是读取 location.hash(这将返回 photoid=2)并通过 AJAX 加载图片,方法是向服务器发送请求,路径为“www.mydomain.com/photos/”+ location.hash

于 2011-01-16T21:48:05.413 回答