エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

え、そうなの? safariとfirefoxでブラウザバックすると、jsで変更後のhtmlになる(キャッシュのせいで)

 

jsでformタグのactionの値を、ユーザがクリックした場所で切り替えるような

コーディングをしていたところこの問題が発生しました。

 

例)

domain.com/list.phpをurl直たたきをするとこんなhtmlになるページに対して

<form action="?">

 

ユーザがとあるリンクをクリックするとjsでこうしてpostする

<form actioin="detail.php?id=123123">

 

そしてブラウザバックした場合に

 

IE、クローム

<form action="?">

 

 

しかし、

safarifirefox

<form actioin="detail.php?id=123123">

 

となる。

 

こなると、action="?"でpostするつもりだったリンクのpost先がdetail.phpになってしまい、挙動がおかしくなります。

 

対策は、自分自身にpostしたいクリックイベントを拾って

$(#selector").attr("action","?");

 

こうやって強制的に一度、?に書き換えるスクリプトを追加。

 

これで解決。

 

 

ほかにもこんな手でも解決するらしい。

時と場合によって、使いわけよう。

 

 

ブラウザバックした場合でも、サーバと通信する。

河西 高明 Tech Blog: Safariで"戻る・進む"時のキャッシュを無効にする

 

 

よくわかりませんが。。。

SafariとFirefoxでブラウザバック(戻るボタン)を押した際、前のページの画面効果残っている件ついてを解説