【问题标题】:Hash refresh in JavascriptJavascript中的哈希刷新
【发布时间】: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


【解决方案1】:

使用onclick事件属性:

<a href="page.html#1" onclick="document.write(window.location.href);">First content</a>
<a href = "page.html#2" onclick="document.write(window.location.href);">Second content</a>

【讨论】:

  • 这只会打印 带有链接的页面的 location.href,位于 带有链接的页面内。我需要 链接的页面 的 location.href,来自 链接的页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多