【问题标题】:BackboneJS PushState prevent page reloadBackboneJS PushState 防止页面重新加载
【发布时间】:2014-09-25 10:13:42
【问题描述】:

我有这个问题,当我单击锚点时,页面会重新加载,即使我使用的是pushstate:true,我也想避免这种情况

所以,在我的 main.js 中,我有:

Backbone.history.start({ pushState: true, root: App.ROOT });

$(document).on('click', 'a:not([data-bypass])', function (evt) {

    var href = $(this).attr('href');

        if (href && href.indexOf('#') === 0) {
            evt.preventDefault();
            Backbone.history.navigate(href, true);
        }
});

所以,我尝试像Preventing full page reload on Backbone pushState 中提到的那样更改它 - 但没有成功。

我正在使用BackboneJSNodeJSHandlebarsJS

有什么解决办法吗?

【问题讨论】:

    标签: javascript jquery node.js backbone.js handlebars.js


    【解决方案1】:

    pushState: true与点击链接时阻止加载整页无关,它只是在浏览器地址栏中更新url地址的一种方式。 evt.preventDefault() 应该防止链接的默认行为。

    您提供的代码非常有选择地应用evt.preventDefault(),从某种意义上说,根据您的代码,不以# 开头的链接就像通常预期的链接一样有效 - 重新加载该页面。

    【讨论】:

    • 当我在if-statement 之前添加evt.preventDefault() 也无济于事!?... :-/
    • 不确定你的意思是什么也没有帮助,但在 if evt.preventDefault() 实际上会阻止任何链接像链接一样,即不会带你到链接页面,这是如果您使用 javascript 处理该操作,您想要什么。您链接到的答案实际上也很好地检查了链接是否是外部的,并且只防止内部链接的链接加载。
    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2018-01-13
    相关资源
    最近更新 更多