バックボーンルータでpushStateを有効にすると、すべてのリンクでfalseを返す必要がありますか、それとも自動的にバックボーンで処理しますか?そこには、HTML部分とスクリプト部分の両方のサンプルがありますか?むしろ個別リンク上でpreventDefaultを行うよりも、あなたは、ルータがデフォルトでそれらを処理し、data-bypass
属性を持つことによって、例外を作ってみよう、という使い方Backbone.jsとpushState
initializeRouter: function() {
Backbone.history.start({ pushState: true });
$(document).on('click', 'a:not([data-bypass])', function (evt) {
var href = $(this).attr('href');
var protocol = this.protocol + '//';
if (href.slice(protocol.length) !== protocol) {
evt.preventDefault();
app.router.navigate(href, true);
}
});
}
:
素晴らしいです。ありがとう! – Marcus
私は、IE7が絶対URLを返すことに気付きましたが、相対URLを期待していたところがありました。このケースを処理するには、navigateを呼び出す前に 'href'の値を相対パスに正規化する必要があります。 – lupefiasco
興味深いことに、(href.slice(protocol.length)!== protocol)は何をしていますか? – dezman