イベント発生後にURLを変更するために、バックボーンのナビゲート機能を起動しています。私の場合はBackbone.history URLフラグメントの復号化を防止する
コード
Backbone.history.navigate("?q=" + encodeURIComponent(searchQuery))
、searchQuery
は、このようにスペースやUnicode文字を含む、マックス・ミュラーのようなものである可能性があります。だから、encodeURIComponent
をmax + m%C3%BCllerにエンコードしなければならないのです。
しかし、バックボーンのナビゲート機能では、私のsearchQuery
は "maxmüller"に戻って復号化され、そのように戻されます。
だから、最後にURLが有効なURLではありません
myroot.com/?q=maxマーラー
に変更されます。代わりに、それはこのようにする必要があります:
myroot.com/?q=max+m%C3%BCller
限り、これを解決するには、2つの可能な方法がある私は考えることができるよう:
1. changing/extending Backbone.history.navigate to return the encoded
fragment
2. recreating Backbone's navigate functionality to change the URL with plain Javascript or using any other library
なぜBackboneのデフォルトの動作ではないのですか?無効なURLを作成することは意味がありません。
を行うには、最も賢明なことだろう疑う
は、私は無地のJavaScriptを使用する瞬間を決め、次のように行った: 'ウィンドウ。location.hash = "?q =" + encodeURIComponent(searchQuery); '。 –
それは意味があります:) –