0

ウィンドウがユーザーによって更新されたかどうか、またはそれが window.location.reload(); であったかどうかを検出できる方法はありますか? js コマンドが実行され、ページが更新されましたか?

ユーザーがページを更新/ナビゲートした場合はフィルターセッション変数の設定を解除し、リロード(javascript)を行った場合はこのフィルターセッション変数を保持したいためです。

私は$_SERVER['HTTP_REFERER']

window.location.reload() を実行すると、 $_SERVER['HTTP_REFERER'] が完全な現在のパス リンクになるので、次のことを試しました。

if(!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] != url::base(true).Request::current()->uri())
{
    $session = Session::instance();
    $session->delete('deal_filter');
}

しかし、これは効果的ではなく、時々しか機能しません。

この方法で検出できない場合、これを達成するための他の方法はありますか?

4

1 に答える 1

2

ページを更新する代わりに、値を指定して POST リクエストを送信してみてください。フォームを追加するだけでいいと思いますが、

<form name="refresh_form" action="mypage.php" method="post">
<input type="hidden" name="refresh" value="yes">
</form>

更新用の Javascript コードを、フォームを送信するためのコードに置き換えます。

document.refresh_form.submit();

ページの PHP で値を確認します。

if (isset($_POST['refresh']))
{
    // handle the case when your Javascript submitted the refresh
}
于 2012-08-12T03:22:56.383 に答える