过去,我常常依赖哈希进行内联导航,例如:
http://url?Category=a&item=3#Paragrah1
(指向http://url?Category=a&item=3
页面中的第1段)
随着ajax的广泛使用,hash标记已经转换到了另一个用途,允许在不重新加载整个页面的情况下刷新页面。例如:
http://url#!Category=a&item=3
http://url#!Category=a&item=4 (the page switches to item 4, no full page reload)
我的问题是:如何使内联导航在这样的页面中工作?举上面的例子,我如何指向http://url#!Category=a&item=4
页面中的第1段?
请改用HTML5历史API。然后您可以使用哈希再次滚动。
如果您需要将散列#
用于网页导航以及移动到特定页面上的特定元素,那么您需要自己处理滚动。
javascript提供:window.scroll(x, y)
。
在您的示例中,当您处理URL http://url#!Category=a&item=4
时,您需要使用使Paragraph1
移动到页面上正确位置(即顶部)的坐标来执行window.scroll
。页面布局发生变化时,您需要随时调整这些坐标。