web-dev-qa-db-ja.com

戻るボタンのクリックでページを更新する方法は?

.htaccessを使用して、すべてのトラフィックを単一のindex.phpファイルにルーティングします。以下のコードはトラフィックを誘導しますが、何らかの理由で[戻る]ボタンでは機能しません。戻るボタンを機能させるために何をすべきかわかりません。私はさまざまなことを試してみましたが、かなりグーグルで調べましたが、どれもうまくいきませんでしたので、ここの誰かが助けてくれることを願っています!

_<?php
   if(isset($_GET['parameters'])) {
      if($_GET['parameters'] == "repair")
         include 'repair.html';
      else if($_GET['parameters'] == "training")
         include 'training.html';
      else if($_GET['parameters'] == "products")
         include 'products.html';
      else if($_GET['parameters'] == "about")
         include 'about.html';
      else if($_GET['parameters'] == "employees")
         include 'employees.html';
      else if($_GET['parameters'] == "training")
         include 'training.html';
      else if($_GET['parameters'] == "newaccount")
         include 'newaccount.html';
      else if($_GET['parameters'] == "contact")
         include 'contact.html';
      else if($_GET['parameters'] == "recommended")
         include 'recommended.html';
      else if($_GET['parameters'] == "careers")
         include 'careers.html';
      else
         include 'home.html';
   }
   else
      include 'home.html';
?>
_

これまでのところ、使用しようとしましたが失敗しました:_window.onbeforeunload_ _body onunload=""_

onunload=location.reload()または何かへの方法がなければなりません!どういうわけか構文を知っている必要があります!!

22
CodeManiak

これを試してください...テストされていません。私はそれがあなたのために働くことを望みます。

新しいphpファイルを作成します。戻るボタンと進むボタンを使用でき、ページ上の番号/タイムスタンプは常に更新されます。

<?php
header("Cache-Control: no-store, must-revalidate, max-age=0");
header("Pragma: no-cache");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo time();
?>
<a href="http://google.com">aaaaaaaaaaaaa</a>

または

別の解決策を見つけた

ユーザーが戻るボタンを押すと、onloadイベントが発生します。 JavaScriptを介して作成されていない要素は、値を保持します。 display:noneに設定されたINPUT TYPE = "hidden"内で動的に作成された要素で使用されるデータのバックアップを保持し、入力の値を使用して動的な要素を元の状態に再構築します。

<input type="hidden" id="refreshed" value="no">
<script type="text/javascript">
onload=function(){
var e=document.getElementById("refreshed");
if(e.value=="no")e.value="yes";
else{e.value="no";location.reload();}
}
41
Gopal

より最近の解決策は The PerformanceNavigationインターフェース を使用しています:

if(!!window.performance && window.performance.navigation.type === 2)
{
    console.log('Reloading');
    window.location.reload();
}

値2は「履歴に移動してページにアクセスした」ことを意味します。

ここでブラウザのサポートを表示: http://caniuse.com/#search=Navigation%20Timing%20API

ブラウザの戻るボタンからアクセスしたときにサイトをリロードします

32
sfscs

Safariでは、非表示の入力ソリューションが機能していませんでした。以下の解決策は機能し、 here に由来します。

window.onpageshow = function(event) {
if (event.persisted) {
    window.location.reload() 
}
};
13
t0vana

これを処理する2つの方法を見つけました。あなたのケースに最適なものを選択してください。 Firefox 53およびSafari 10.1でテストされたソリューション

1。ユーザーが戻る/進むボタンを使用しているかどうかを検出し、ページ全体を再読み込みします

if (!!window.performance && window.performance.navigation.type === 2) {
            // value 2 means "The page was accessed by navigating into the history"
            console.log('Reloading');
            window.location.reload(); // reload whole page

        }

2。ページがキャッシュされている場合、ページ全体を再読み込みします

window.onpageshow = function (event) {
        if (event.persisted) {
            window.location.reload();
        }
    };
9
Javan R.

ここに投稿されたこのシンプルなソリューション [戻る]ボタンでページを強制的に更新する 動作しました...

ユーザーが[戻る]ボタンをクリックしたときに、ブラウザーでページを強制的に再度ダウンロードしようとしましたが、何も機能しませんでした。最新のブラウザにはページの個別のキャッシュがあり、ページの完全な状態(JavaScriptで生成されたDOM要素を含む)を保存するため、ユーザーが戻るボタンを押すと、前のページがユーザーが離れた状態で即座に表示されますブラウザに強制的に戻るボタンでページをリロードさせたい場合は、onunload = ""を(X)HTML本文要素に追加します。

<body onunload="">

これにより、特別なキャッシュが無効になり、ユーザーが戻るボタンを押したときにページが強制的に再読み込みされます。使用する前によく考えてください。このようなソリューションが必要なのは、サイトナビゲーションの概念に欠陥があるというヒントです。

8
jahackbeth

このようなことを試しましたか?未検証...

$(document).ready(function(){
    $('.ajaxAnchor').on('click', function (event){ 
        event.preventDefault(); 
        var url = $(this).attr('href');
        $.get(url, function(data) {
            $('section.center').html(data);
            var shortened = url.substring(0,url.length - 5);
            window.location.hash = shortened;
        });
    });
});
2
reyaner

次を使用して、戻るボタンをクリックしてページを更新できます。

window.addEventListener('popstate', () => {
  location.reload();
}, false);
1

まず、コード内の挿入フィールド:

<input id="reloadValue" type="hidden" name="reloadValue" value="" />

次にjQueryを実行します。

<script type="text/javascript">
   jQuery(document).ready(function()
    {
            var d = new Date();
            d = d.getTime();
            if (jQuery('#reloadValue').val().length === 0)
            {
                    jQuery('#reloadValue').val(d);
                    jQuery('body').show();
            }
            else
            {
                    jQuery('#reloadValue').val('');
                    location.reload();
            }
    });
0
Agustin Gandara