2012-08-12 4 views
0

사용자가 창을 새로 고쳤거나 창이 window.location.reload() 인 경우 감지 할 수있는 방법이 있습니까? 페이지를 새로 고치고 새로 고친 js 명령은 무엇입니까?JS가 페이지를 새로 고침했는지 또는 사용자가 수행했는지 여부를 감지합니다.

사용자가 페이지를 새로 고침/탐색 한 경우 필터 세션 변수를 설정 해제하고 재로드 (자바 스크립트)를 수행 한 경우이 필터 세션 변수를 유지하려고합니다.

은 내가 window.location.reload(), $ _SERVER을 수행 할 때 [ 'HTTP_REFERER']은 전체 전류 경로 링크가되는 $_SERVER['HTTP_REFERER']

작업에 의해 시도했다, 그래서 나는하려고 노력 :

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

그러나 이것은 효과적이지 않으며 때때로 작동합니다.

이 방법으로 검색 할 수없는 경우이를 수행하는 다른 방법이 있습니까?

+0

은 당신의 자바 스크립트를 갱신 할 때 다음 페이지에 POST 액션과 값을 제출 종류의 그것이 새로 고침을 결정하기 위해 그 값을 확인 할 수있을 것인가? –

+0

@ PeteSchlette 예, 좋습니다. 그게 단지 간단한 window.location.reload()처럼 페이지를 새로 고치는 것입니다. – Karem

답변

2

새로 고치는 대신 페이지에 값이있는 POST 요청을 제출해보십시오. 나는 양식을 제출하기위한 몇 가지 코드를 새로 고치는

document.refresh_form.submit(); 

당신의 자바 스크립트 코드를 교체하고 PHP에서 값을 확인,

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

을 폼을 추가하기 만하면됩니다 것 모든 가정 페이지에 :

if (isset($_POST['refresh'])) 
{ 
    // handle the case when your Javascript submitted the refresh 
} 
관련 문제