使用 dojo/hash 时如何处理浏览器刷新?

How to handle browser refresh when using dojo/hash?

在单页应用程序中,我的问题是我正在订阅 hashchange 事件来呈现内容(创建和销毁代表我的页面的小部件),但该函数仅在哈希实际更改时才会被触发,例如就像单击浏览器的后退和前进按钮时一样。

我的主 javascript 文件总是在第一次和刷新时加载,包含以下内容

topic.subscribe("/dojo/hashchange", function(newhash){
    //set content based on hash
});

点击刷新后,它没有被触发,我只剩下一个空白页面(我呈现页面的所有逻辑都在我订阅的那个主题的匿名函数中)

您的订阅没有在刷新时被调用,因为哈希值实际上并没有改变。您正在订阅哈希更改,即页面加载后发生的更改。

使用这种订阅方法,事情很快就会失控。你可能想看看使用路线。一些链接-

https://developer.mozilla.org/en-US/docs/Web/Events/hashchange

https://dojotoolkit.org/documentation/tutorials/1.9/hash/

https://dojotoolkit.org/reference-guide/1.10/dojo/router.html

https://www.sitepen.com/blog/2014/06/18/dojo-faq-does-dojo-have-routing-like-backbone-and-embe/