我只是从crossroads.jshasher.js开始,并且成功解析了我的大部分路线。我不明白的是如何回到页面的根目录。我知道我不是说对了,但这是我的问题:


我导航到http://example.com,然后看到需要查看的内容。
我将哈希更改为http://example.com/#/foo,然后执行更改DOM所需的操作。
我尝试在浏览器中单击回来,这很烂。


也许我需要在十字路口定义“根”路线?我对历史做错了吗?

最佳答案

据我了解,您在两种设置中都处于中间状态(哈希+十字路口)。

如果根模式匹配,则将具有“根”模式的路由添加到十字路口会触发为此路由定义的处理程序。处理程序调用显示根页面内容。

第二个问题是必须正确配置的哈希器。请参见hasher doc上的hasher.setHash()和hasher.replaceHash()之间的区别。如果要保留历史记录并使用浏览器后退功能,请使用setHash。

整个过程将是:


通过hasher.setHash(new_hash_value)更改URL,在导航栏中手动输入URL或使用浏览器中的向后按钮
hasher认识到哈希值已更改,并触发了进一步处理新URL的十字路口
crossroads解析新的哈希并调用显示根页面(这需要使用根哈希模式的路由)


准备哈希器以收听更改:

function parseHash(newHash, oldHash){
  crossroads.parse(newHash);
}

hasher.initialized.add(initialParse); //parse initial hash
hasher.changed.add(parseHash); //parse hash changes
hasher.init(); //start listening for hash changes


并且当然定义根页面的路由以能够调用显示根内容:

crossroads.addRoute("", function() {
     // call displaying root page
  });

关于javascript - 使用crossroads.js和hasher.js返回到根页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17981423/

10-09 10:15