基本上,我在页面上有很多链接 - 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事件没有被调用...有谁知道如何解决这个问题?
答案 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或类似的图书馆来处理您的详细信息。