JavaScript事件hashchange和document.title

JavaScript事件hashchange和document.title,javascript,firefox,hashchange,Javascript,Firefox,Hashchange,我对在Firefox的hashchange事件上运行的一些JavaScript代码有问题 代码应该更新web文档以及document.title。最后修改document.title 如果不修改document.title,一切正常。如果更新document.title,代码有时会失败,但并不总是如此。症状如下 document.title根据单击的带有哈希URL的A标记正确更新 浏览器中的URL字段不会更新为新值 即使在更改document.title之前在代码行上执行了其他文档更新,也不会

我对在Firefox的hashchange事件上运行的一些JavaScript代码有问题

代码应该更新web文档以及document.title。最后修改document.title

如果不修改document.title,一切正常。如果更新document.title,代码有时会失败,但并不总是如此。症状如下

  • document.title根据单击的带有哈希URL的A标记正确更新
  • 浏览器中的URL字段不会更新为新值
  • 即使在更改document.title之前在代码行上执行了其他文档更新,也不会执行任何其他文档更新
document.title会根据预期的新URL字段进行更新,但URL字段不会更新

然后我在google chrome上尝试了这个代码。那里一切正常

如果我在hashchange eventhandler中添加一个console.log(),一切正常。另一个解决方法是使用window.setTimeout和延迟修改document.title,例如10毫秒

我正在为Fedora 33使用Firefox 88.01

这是带有A标记的HTML代码段:

<ul>
    <li><a href="#one">Page one</a></li>
    <li><a href="#two">Page two</a></li>
    <li><a href="#three">Page three</a></li>
</ul>
我不应该在hashchange事件中修改document.title,还是这是Firefox的问题


我在Firefox论坛上问了这个问题。他们把我送到这里。

在浏览器控制台中观察到任何错误吗?在Firefox Nightly 90.0a1中,一切都正常。这里也没有重做。你说的“Firefox论坛”是什么意思?这是一个错误。您应该在报告时尝试进行更好的重新编程,这将导致问题在您的系统上接近100%的时间。控制台中没有错误。对于Firefox论坛,我的意思是()。我做了更多的调查,这不仅仅发生在hashchange事件上。在单击处理程序中也会发生同样的情况,该处理程序使用history.pushState更改URL,然后更新document.title和一些内容。根据观察,发生这种情况时链接将保持活动状态。我不可能每次都复制,但它最终总会发生。我想我可以得出结论,这是我的Firefox版本的一个问题。
function  updatepage() {
    const page = location.hash.slice(1);
    document.querySelector('h1').textContent = `Welcome to page ${page}`;
    document.title = `Page ${page}`;
}

window.addEventListener('hashchange', updatepage);