2010-07-23 2 views
1

에 "웹 페이지 만료 됨"과 같은 메시지를 표시해야합니다. 그러면 사용자가 브라우저의 뒤로 버튼을 눌러 이전 페이지에 도달해야합니다. asp.net에서 "웹 페이지가 만료되었습니다"와 같은 메시지 표시사용자가 이전 페이지로 이동하기 위해 브라우저의 뒤로 버튼을 누른 경우 다음 페이지는 asp.net

나는 이것을 위해 javascript를 사용할 수 있습니까 ???

예를 들면 ...

웹 사이트에는 4 페이지가 있습니다. 1,2 및 3이 돌아올 수 있습니다. 하지만 네 번째 페이지가 실행되면 네 번째 페이지는 돌아갈 수 없습니다 ... 사용자가 브라우저의 뒤로 버튼을 누르면 다이아 프레이 마 메시지 "weg page expired"가 표시됩니다.

답변

0
<script type="text/javascript"> 
function GoBack() 
    { 
     window.history.go(+1); 
    } 
</script> 

<body onload="GoBack();"> 

Response.Cache.SetCacheability(HttpCacheability.NoCache);

0

이것은 까다 롭습니다. cache-control 지시어를 사용하여 사용자가 항상 파일의 새로운 사본을 얻도록 할 수는 있지만 사용자 질문이 아닙니다.

JavaScript 또는 DOM에는 문서 작성시기에 대한 정보가 없으며 사용자의 시계가 서버 시간과 동기화되는 것을 신뢰할 수 없습니다. 그러나이 작업을 2 단계로 진행하는 데 신경 쓸 필요가 없다면 페이지에 GMT 타임 스탬프를 포함 시키면됩니다. 그런 다음 동일한 서버에 간단한 AJAX 요청을 할 수 있습니다 (빈 텍스트 파일 일 수도 있고 POST 또는 GET이 아닌 HTTP HEAD 요청 일 수도 있습니다). 클라이언트가 XHR을 통해 이것을 성공적으로로드하면 페이지에 포함 된 타임 스탬프와 비교할 수있는 "Date"헤더를 수신해야합니다. 이 코드를 페이지에 가능한 한 많이 올려 놓으면 페이지를 새로 방문하는 사용자가 서버 시간에서 2 ~ 2 초 정도 떨어져있을 것입니다. 그러나 뒤로 버튼을 치는 누군가는 꽤 싱크가 맞지 않을 것입니다.

사이트에 jQuery를 사용하는 경우, 코드는 다음과 같이 보일 것이다 이렇게하려면 : 내가 거기있을 것입니다 알고 있기 때문에이 예에서

var intTimeStampAtCreation = 1279871757843; // This value is generated when building the page 

var onXHRLoad = function(xhr) { 
    var dtCurrentDateTime = new Date(xhr.getResponseHeader('Date')); 
    var intCurrentTimestamp = dtCurrentDateTime.getTime(); 
    if (Math.abs(intCurrentTimestamp - intTimeStampAtCreation) > 10000) { // 10 seconds 
     alert("Expired"); 
    } 
}; 
$.ajax({type:"HEAD",url:"/",complete:onXHRLoad}); 

, 나는 (기본 페이지를로드하고 있습니다를), 그러나 당신은 그것을 작고 역동적이지 않은 것으로 지적해야합니다.

0

JavaScript에서는 아무 것도하지 않아도됩니다. 서버의 응답 헤더에 캐시 제어/만료를 지정해야합니다.

1

이것은 내가 사용하는 것입니다. 대부분의 경우 작동합니다. 그러나 ASP.NET에서이 문제와 관련하여 많은 논의가 있습니다.

Response.ClearHeaders(); 
    Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1 
    Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1 
    Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1 
    Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1 
    Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
    Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
    Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
    Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 
    Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 
    Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1 
관련 문제