1

Safari のバックボーン ルーターで頭が痛い

私はこのコードを持っています:

app.navigate("ask/" + encodedSearchKey,true);

そして私のルーターで:

var AppRouter = Backbone.Router.extend({

  routes:{
    "":"main",
    "ask/*encodedSearchKey":"askSearch",
  },

  askSearch:function(){
    ...
  },
  ...

});
app = new AppRouter();
Backbone.history.start();

クロムでは、期待どおりに機能し、URL がルーティングされ、askSearch 関数が 1 回呼び出されます。

ただし、Safari では、askSearch 関数は実際には 2 回実行されます。

そして私が試したとき

app.navigate("ask/" + encodedSearchKey,false);

クロムでは、askSearch関数は期待どおりに呼び出されませんでしたが、Safariでは実際に一度呼び出されます

私はデバッガーを実行しましたが、 app.navigate 行は常に一度だけ呼び出され、ルーター自体以外に askSearch 関数を起動できるものは他にないと確信しています。

これで、ブラウザの種類を検出することでこれを修正できることがわかりましたが、オンラインで同様の問題は見つかりませんでした。人々はこの問題を抱えていないようです。ここで何か非常に悪いことをしていますか?

4

3 に答える 3

0

関数のnavigate2番目の引数はブール値ではなく、オプションオブジェクトです。

app.navigate("ask/" + encodedSearchKey, {
    trigger: true
});
于 2013-01-06T13:41:38.617 に答える
0

Firefox では、URL がエンコードされていないため、ルーティングが 2 回、場合によっては発生します...

于 2014-08-26T08:51:05.563 に答える