1

基本上,我在页面上有许多链接 - 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 事件......有谁知道如何解决这个问题?

4

2 回答 2

3

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

于 2011-02-21T05:15:41.347 回答
2

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

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

于 2011-02-21T03:27:08.497 回答