質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Flash

Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

3841閲覧

【rails】flashメソッドについて

gogoackman3

総合スコア109

Flash

Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/09/30 11:46

RubyonRailsのFlashの仕様について質問があります。

通常のflashメソッドの場合、以下の挙動では再表示されてしまうのでしょうか?

ruby

1redirect_to :画面A, :flash => { :success => '投稿が完了しました。' }

①画面Aでflash表示

②画面Bに遷移

③ブラウザの戻るボタンをクリック

④画面Aに戻る。そこで再度flashが表示されてしまう。

上記の場合、画面Aでflashが表示された後に、画面A自体を更新すると表示されなくなりますが、ブラウザの戻るボタンで画面Aに戻ってくる場合、再表示させない方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「Flashが再表示される」という表現はあまり適切ではなく、正しく言えば「Flashが入ったページが、そのまま再表示される」ということになります。これはブラウザのキャッシュの問題で、Railsが再度表示しているわけではありません

ということで、戻ったときにも消したいのなら、その処理を意図的に入れる必要があります。JavaScriptのonunloadにFlashを削除する処理を入れればいいでしょう。

投稿2016/09/30 12:54

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gogoackman3

2016/09/30 14:35 編集

ありがとうございます!早速調べて以下のようなJSを実装しました。 導入箇所:画面Aのbody閉じタグの直前 window.onunload = function(){ var flash = document.getElementsByClassName('flash'); flash[0].parentNode.removeChild(flash[0]); }; しかし、戻るボタンで戻っても、flashが削除されません。 onloadに切り替えて試すと、flashが表示されて即時消えるので、function内のコード自体は正しいと思います。 つまり、onunloadが正しく発火していないような気がするのですが、何か誤っていますでしょうか?
gogoackman3

2016/09/30 14:53

ちょっとjqueryで書き直して、以下でsafariだと正常に動いたのですが、chromeだと 画面Aを離れる直前にremove自体は正しく発火し削除出来ているものの、画面Bから画面Aに戻った際に、flash用のdivが復活してしまいます。というところまでは確認できました。 $(window).on('beforeunload', function(e) { $('.flash').remove(); });
gogoackman3

2016/09/30 15:02

以下のサイトにそれっぽい記述がありました・・・。 http://affiliate.ks-product.com/safari-firefox-browser-back-rollover/ 実はSafariやFirefoxはスクリプトが実行完了した状態をキャッシュしていてそれを再現しています。IEやChromeがページのみをキャッシュしているのに対し、SafariやFirefoxはスクリプトの実行結果込みでキャッシュしてしまっているんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問