【发布时间】:2021-08-13 21:04:16
【问题描述】:
我的上一期快要完成了,但现在我要处理一些更微妙和烦人的问题。
我有一个页面,上面有一些类似的链接:
<a href = "page.html#1">First content</a>
<a href = "page.html#2">Second content</a>
在页面page.html 中有一些javascript,如下所示:
document.write (window.location.href);
所以,我单击第一个链接,我看到(在不同的框架中)页面“page.html”,正确地从锚点 #1 开始。最后,javascript 写入“page.html#1”,这是正确的。 然后我点击第二个链接,我看到页面“page.html”改变了它的起点,现在正确地设置在锚点 #2。但在页面末尾我仍然看到“page.html#1”,而不是我预期的“page.html#2”。我认为这是因为页面与之前完全相同,只是起点发生了变化,因此“location.href”没有改变,尽管哈希值有所不同。
有没有办法解决这个问题,并获得原始的 location.href,即具有正确哈希的那个?
【问题讨论】:
-
问题是页面实际上并没有改变。您将需要再次执行
document.write()功能,而不是依赖页面重新加载来为您执行它。 -
Tangential,但
document.write()已经有些过时了一段时间了——您可能应该利用更合适的 DOM 操作方法。 Further reading -
Document.write 只是找出问题所在的一种方法。我需要的是识别正确的哈希,如原始链接中所示。
-
@AndreaCarta
window.location.href确实识别正确的哈希值。只是你的代码在页面内导航时没有再次执行。 -
@Bergi:我的立场是正确的。与我的预期相反,hashchange 事件处理程序确实有效,并且代码(在处理程序内部移动后)现在可以正常工作)。你的建议很好。
标签: javascript html url-fragment