0

HTML5 pushState を使用して頭を包み込もうとしています。それはうまくいくようです。状態を追加してブラウザに戻ると、すべて問題なく表示されます。しかし、ページを更新すると 404 になります。これは、pushState で追加された URL が実際には存在しないためです...

ページを含む単一のフォルダーからすべてをロードしようとしているindex.htmlため、URL はhttp://www.server.com/app_name/<something>( app_nameindex.html ファイルを含むフォルダー) のようになります。

私が収集できる限り、ハッシュバンは悪いと見なされているので、同じ実際のページにとどまり、更新できるようにするために、どのpushState URLを使用できますか/使用する必要がありますか?

リフレッシュした後、状態を取得することはできますか?

ps javascript が有効になっていない、または下位互換性が維持されていないブラウザーについては心配していません。.htaccessこれを移植可能で構成不要にするために、ルールを変更したくありません。

4

2 に答える 2

0

私はpushStateをあきらめ、代わりにBBQjQueryプラグインを使用しまし

コードは次のようになります。

$(document).ready(function() {
  // making sure a hashchange event is triggered for refresh
  $(window).trigger('hashchange');
});

// this gets called on any page change, back button etc                                                                                                                                                                                                                                             
$(window).bind( 'hashchange', function(e) {
  // the fragment contains a hash value at the
  // end of the url, e.g. #xyz
  var url = $.param.fragment();
  // simulating a click on the appropriate link on the page
  // based on the fragment
  $('.panel a[href="#' + url + '"]').click()
});

ページ上のURLは次の形式です。

<a href="#xyz">link to xyz</a>
于 2012-11-09T22:31:35.750 に答える
0

問題は、Web サーバーがapp_nameフォルダーにある somethingというファイルを見つけようとすることです。/app_name/* へのすべてのリクエストを index.html にルーティングし、DOM のロケーション オブジェクトを使用して適切なアプリケーション状態を設定する必要があります。

サーバーに何をすべきかを伝えなければ、先に進むことはできません。それが History API の要点です。.htaccess ファイルをいじりたくない場合は、おそらく mod_rewrite または sth を使用して Web サーバー (Apache?) の構成を編集する必要があります。そのように。

于 2012-11-05T22:16:09.953 に答える