例えば、コメントをPOSTした後にページをリロードする際、以下のように、php処理の中でJavaScriptによるアラートを表示させ、その後JavaScriptでページをリロードしています。
// POSTの処理などが終わった後に・・・ $url = ( empty($_SERVER['HTTPS']) ? 'http://' : 'https://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo '<script>alert( "コメント有難うございます。" );</script>'; //アラートを表示 echo '<script>location.href = "$url";</script>'; //リロード exit();
上記のコードで、PCでは、Chromeやその他の主要ブラウザで、アラート表示後にページをリロードできるのですが、スマホのChromeブラウザですと、うまくいくときと、いかないときがあります。
うまくいかない時は、「投稿自体はできるが、アラートも表示されず、リダイレクト(リロード)の途中のような、左上で通信中のマークの円がぐるぐる回った状態のまま、ずっと真っ白な画面のままになってしまう」状態になります。
履歴・キャッシュ・Cookieの削除した直後に上記のコードを実行すると、「うまくいかない時」の状態になります。
※スマホでも、Chromeブラウザ以外、Safariブラウザなどでは、履歴・キャッシュ・Cookieの削除を行った直後でも、アラート表示後にページをリロードという想定した処理が行えます。
※アラートの処理を消すと、スマホのChromeブラウザで履歴・キャッシュ・Cookieの削除した直後でもリロードの処理は正常に行えます。
なぜ、スマホ版のChromeブラウザでは、履歴・キャッシュ・Cookieの削除した直後、jsでアラート表示後にページをリロードしようとすると、アラートも表示されずに画面が白い状態で止まってしまうのか、原因が全然わかりません。
どなたか、原因の予想がつくお方がいらっしゃいましたら、どうか、お教え頂けましたら幸いです。
何卒、宜しくお願い致します。
(スマホはの機種は関係ない気がしますが、念のため記すとiPhone7を使用しています。)
回答2件
あなたの回答
tips
プレビュー