操纵/更改地址栏链接

时间:2011-01-16 21:35:32

标签: javascript url url-rewriting address-bar

我出于自己的“想法”。

我有一个专辑查看器。当你点击下一步时,我希望地址栏与它一起挂起,例如,如果你开始?photoid = 1,然后点击下一步(下一张图片追加和东西),然后我想要它说?photoid = 2.

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

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

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

那我该怎么做呢?

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

然后我也认为嘿,html5只支持ff4,我得到了ff3.6,当你浏览专辑照片时他们操纵地址栏网址,就像我想要的那样(以及我写的内容)但它只适用于Chrome和ff4 ..?)。他们怎么能这样做?

2 个答案:

答案 0 :(得分:1)

哈希是更改网址栏而不自动刷新您所在网页的唯一方法。这就是历史上它是锚标记(哈希)的原因。其他所有内容都会告诉您的浏览器转到其他页面。如果你不希望它转发,抛出一个哈希,然后用javascript读取那个哈希,并按你想要的那样做。使用jQuery很容易,或者如果你想使用你的浏览器后退/前进按钮来浏览历史状态,你可以深入研究Asual's swf address js libraryjQuery's Hash Tag Change Listener插件。

答案 1 :(得分:0)

我不太确定你的理解是否正确,但这就是我想出的类似问题。

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

现在当有人打电话给这个网址时,浏览器会尝试加载www.mydomain.com/photos/并获得必要的标记,但不会获得照片,你现在可以做的是读取location.hash(将返回photoid) = 2)并通过AJAX加载图片,向服务器发送请求,路径如“www.mydomain.com/photos/”+ location.hash