gpt4 book ai didi

javascript - Backbone 路由器导航和 anchor href

转载 作者:行者123 更新时间:2023-12-03 00:08:32 25 4
gpt4 key购买 nike

在支持主干的应用程序中,我看到代码继续使用 <a href="#foo"></a> ,而 anchor 点击由 Backbone 事件处理程序处理。

或者,可以通过以下方式处理到 #foo 的导航:

Router.history.navigate("foo");

我相信后者是更好的方法,因为它允许轻松地迁移到 HTML5 的 PushState 功能或从 HTML5 的 PushState 功能迁移出来。如果我们确实使用pushState,对于不支持pushState的浏览器,Backbone将能够优雅地降级为#foo。

由于我对 Backbone 还很陌生,有经验丰富、知识渊博的人可以证实情况确实如此吗?

最佳答案

我个人已启用 pushState 并使用 Tim Branyen 的 Backbone 样板 adding a click handler 中采用的方法。将所有链接点击发送至navigate,除非它们具有data-bypass 属性:

$(document).on("click", "a:not([data-bypass])", function(evt) {
var href = { prop: $(this).prop("href"), attr: $(this).attr("href") };
var root = location.protocol + "//" + location.host + Backbone.history.options.root;

if (href.prop && href.prop.slice(0, root.length) === root) {
evt.preventDefault();
Backbone.history.navigate(href.attr, true);
}
});

这工作得很好,正如 @nickf 提到的,它的优点是你不必使用 hash/hashbang hack,即使对于不支持 pushState 的浏览器也是如此。

关于javascript - Backbone 路由器导航和 anchor href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com