使用不同的片段ID加载相同的页面不会导致页面重新加载?

时间:2011-02-21 03:00:03

标签: javascript onload fragment-identifier

基本上,我在页面上有很多链接 - index.html,它们看起来像这样:

  <li><a href="index.html#0">test 0</a></li>
  <li><a href="index.html#1">test 1</a></li>
  <li><a href="index.html#2">test 2</a></li>
  <li><a href="index.html#3">test 3</a></li>

我在window.onload事件中附加了一个函数,它将打开一个包含片段ID的警告框,所以如果我点击第一个链接,我应该得到一个警告框,其中包含“0”等。

但是,当我从URL栏访问index.html并按Enter键时,我只会收到一个警告框。当我点击链接时,没有出现警告框。我认为这是因为window.onload事件没有被调用...有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您需要window.onhashchange事件,该事件会在锚点导航中触发 https://developer.mozilla.org/en/DOM/window.onhashchange 对于不支持的UA,您必须处理document.links上的onclick事件,并确定链接是否指向当前文档(即:只有link.hash与location.href不同)

答案 1 :(得分:2)

更改片段的目的是在特定页面中从一个部分移动到另一个部分。当您单击其中一个链接时,它只会更改片段,页面本身保持不变。由于页面没有更改,因此没有页面加载事件,因此不会调用onload处理程序。

您需要一个onhashchange处理程序而不是onload处理程序。请注意,并非所有浏览器都支持onhashchange,因此您必须使用手动滚动版本来浏览某些浏览器。如果您正在做很多这类事情,那么您可能需要查看Sammy或类似的图书馆来处理您的详细信息。