2015-11-05 6 views
5

私はページがアンロードされない1ページアプリケーションを持っています。 #URLを使用してjavascriptを使用してhashchangeを検出し、JSとAJAXを使用してUIを更新しています... は、サーバーに追加の要求を行うために前方および戻るボタンを必要とします。戻るボタンと進むボタンが1ページのアプリケーションでページをリロードするのを防ぐ

現在、ユーザーが最初にサイトに来て初めて、サーバ要求が

Processing by MyController#index as HTML 

(OKです)作られて私の目標は、だけで、ユーザーの時間中に一度起こるために、このサーバ要求のためでありますサイト...他のリンクをクリックするたびに、新しいサーバーリクエストを防止するためにURLに「#」を使用するだけです...したがって、すべての「a」タグは次のようになります。

<a href="#page1/

私が抱えている問題は、電子バックと前進ボタンが(私が欲しいものである)私のJSなhashchangeリスナーをトリガ...しかし、それはまた、私は現在

1)ユーザーはMYDOMAINに移動取得していた機能である。ここ

Processing by MyController#index as HTML //I DO NOT WANT THIS TO HAPPEN 

を呼び出します(これはOKです)

3)ユーザーがリンクをクリックし、現在のURLがmydomain.comを読み.COM

2)「HTMLとしてMyController#インデックスによる処理は、」起動され、サーバーの要求がなされています/#page1とJSでビューを更新する(これは問題ありません)

4)ユーザーがリンクをクリックすると、今urlはmydomain.com/#page2を読み取り、私はBACK(これはOKです)

5)ユーザーがクリックしたJSとビューを更新し、現在のURLがMYDOMAINを読み込みます.com /#page1とJS(これはOK)でビューを更新します。

6)ページをリロードするためにサーバリクエストが自動作成されました(「MyController#indexによる処理」が再度​​呼び出されます)(THIS IS NOT OK

ユーザーが戻るボタンをクリックすると、ステップ6が発生しないようにするにはどうすればいいですか?変更するURLを入力してください.JSを介してUIを更新し、サーバーリクエストはありません。

また、これはまったく役に立ちますと、私はレール上でルビーを使用しています。

+0

これが可能かどうかわかりません。 Upvoted。 – VSO

+2

あなたはHTML5履歴APIを使用することができますhttp://diveinto.html5doctor.com/history.html – jcubic

+0

あなたはステップ6にどのように到着したかを明示していませんでした。あなたはステップ5で一度ステップが自動的にステップ6? – ghybs

答えて

1

あなたがしようとしていることは不可能です。バック/フォワード/ストップ/リフレッシュなどのブラウザボタンのデフォルトの動作をオーバーライドすることはできません。

独自の戻るボタンと進むボタンを作成して実際のページ自体に配置することができます。それに応じてイベントハンドラをコーディングしてAJAX呼び出しを行います。

+0

私がしようとしているのは、ステップ6が自動的に発生するのを防ぐことです。可能? –

+0

@YaseenAniss私の知る限り、はい、はい。私は間違っている場合に備えて、このスレッドをチェックします。 –

0

は、最後に、それはそれを考え出しました。何らかの理由で、Turbolinksは、戻るボタンまたは進むボタンがクリックされたときにページをリロードするようになっていました。私はアプリからTurbolinksの宝石を削除し、今はすべての完璧な作業。

関連する問題