现在,使用AJAX的最大问题是,如果我在一个页面上使用AJAX,请转到另一个页面,然后使用浏览器的“后退”按钮返回使用AJAX更改的所有内容。
我曾考虑过使用jQuery Addresss插件来解决该问题,但我不喜欢它仅用“#whatever.html”来修改URL而不是完全更改它。
理想情况下,当我进行相关的AJAX调用时,我希望URL从“ www.example.com/p:2/”到“ www.example.com/p:3/”。
这是可能吗?
不,这是不可能的。
我希望您意识到您正在尝试解决一个极其困难的问题。
假设您的网址看起来像
http://example.com/mypage/
如果您以编程方式将窗口位置更改为
http://example/mypage/1/
浏览器将接管并尝试导航到该页面,然后出现了您喜欢的ajax代码!
那有什么选择呢?您使用URL片段。
假设您有一个这样的网址,
http://example.com/anotherpage/#section
浏览器将首先加载http://example.com/anotherpage/并尝试查找名为“ section”的锚点并滚动到该位置。此行为被“地址”插件利用。这类似于那些“滚动到顶部”链接的工作方式。
因此,如果您在页面上
并将网址更改为
http://example.com/mypage/#1
浏览器不会加载新页面,而是尝试找到名为“ 1”的锚点并滚动到该锚点。
即使您已设法将片段添加到URL,也并不意味着工作已完成。如果用户按下“后退”按钮,则DOM将被重置,您将必须解析这些片段并重新创建DOM。绝对是不平凡的。