브라우져 새로고침 뒤로가기 막기... ㅜ.ㅜ
-
- Posts: 12
- Joined: 2005 03 11 18:41 07
- Contact:
브라우져 새로고침 뒤로가기 막기... ㅜ.ㅜ
아래는 익스전용 코드입니다.
표준코드로 바꾸고 싶은데 쉽지 않네요
어떻게 해야하나요
불여우는 event 값을 받아서 e.keyCode 이런식으로 한다는건 알겠는데
e.keyCode==0; 이부분이 분명 키값을 변경하였지만
브라우져는 새로고침고 되고 뒤로가기도 되네요... ㅜ.ㅜ
표준코드로 하려면 어떻게 해야할까요
<script type="text/javascript">
// 키보드 키막기
// 뒤로가기막기,F5
function keydown()
{
alert(event.keyCode);
if (event.keyCode == 8 || event.keyCode == 116) {
event.keyCode==0;
//alert("key="+event.keyCode);
event.cancelBubble = true;
event.returnValue = false;
return false;
}
}
document.onkeydown=keydown;
</script>
표준코드로 바꾸고 싶은데 쉽지 않네요
어떻게 해야하나요
불여우는 event 값을 받아서 e.keyCode 이런식으로 한다는건 알겠는데
e.keyCode==0; 이부분이 분명 키값을 변경하였지만
브라우져는 새로고침고 되고 뒤로가기도 되네요... ㅜ.ㅜ
표준코드로 하려면 어떻게 해야할까요
<script type="text/javascript">
// 키보드 키막기
// 뒤로가기막기,F5
function keydown()
{
alert(event.keyCode);
if (event.keyCode == 8 || event.keyCode == 116) {
event.keyCode==0;
//alert("key="+event.keyCode);
event.cancelBubble = true;
event.returnValue = false;
return false;
}
}
document.onkeydown=keydown;
</script>
W3C 표준를 위해
Re: 브라우져 새로고침 뒤로가기 막기...
Code: Select all
<script type="text/javascript">
document.onkeydown = function(e){
key = (e) ? e.keyCode : event.keyCode;
if(key==8 || key==116){
if(e){ //표준
e.preventDefault();
}
else{ //익스용
event.keyCode = 0;
event.returnValue = false;
}
}
}
</script>
분명 이벤트 객체의 preventDefault(); 메소드를 사용해서 캔슬시킬수가 있다고
http://www.mozilla.org/docs/dom/domref/ ... ref31.html
나와있으에도 불구하고 이벤트가 캔슬되지 않습니다.
오페라로 테스트해도 마찬가지고.
이론상은 위 코드가 맞긴한데 이해가 안됩니다.
그리고 백스페이스나 새로고침을 막는건 홈피를 방문하는 유저들의 이용에 불편함을
주리라 생각됩니다. 스크립트를 통한 제어는 쉽게 뚫리기 때문에 하나마나 거든요.
아 그렇군요 답변 감사합니다.
Code: Select all
그리고 백스페이스나 새로고침을 막는건 홈피를 방문하는 유저들의 이용에 불편함을
주리라 생각됩니다. 스크립트를 통한 제어는 쉽게 뚫리기 때문에 하나마나 거든요.
이전 페이지부분로 백스페이스키로 누르게되면 디비 생성 로직이 있습니다.
디비가 한번 실행해야 되는데 계속 insert 하게 되어 문제가 생겨서요
어느분이 그렇시더군요 히스토리에 남지 않게 location.replace() 로 하라구요
하지만 이것도 문제 입니다. 빠르게 백스페이스키 두번 입력 즉 키보드 키를
계속 누르는 상태라면 이전이 아니라 3,4.. 그이상의 이전페이지로 이동하기
때문에 문제가 있더군요.
방법이 없을까요?
-
- 해커
- Posts: 691
- Joined: 2004 08 11 22:14 59
- Contact:
-
- Posts: 12
- Joined: 2005 03 11 18:41 07
- Contact:
한가지 더 있는데요
서버세션으로 할경우에도 문제가 되는부분이 있는데
F5 키는 막을수 있으나 백스페이스키로 이전페이지로 갔을때
그페이지의 해더선언으로 캐시를 없에도 페이지는 그대로 있습니다.
혹시 뒤로가기 했을때도 새로고침의 효과를 줄수는 없나요?
F5 키는 막을수 있으나 백스페이스키로 이전페이지로 갔을때
그페이지의 해더선언으로 캐시를 없에도 페이지는 그대로 있습니다.
혹시 뒤로가기 했을때도 새로고침의 효과를 줄수는 없나요?
W3C 표준를 위해
-
- 해커
- Posts: 691
- Joined: 2004 08 11 22:14 59
- Contact:
-
- Posts: 12
- Joined: 2005 03 11 18:41 07
- Contact:
답답하시네요
Code: Select all
새로고침이나 뒤로가기를 막는 것 보다는 새로고침이나 뒤로 가기를 사용자가 했을 때에도 값이 안들어가게 막는 방향으로 생각을 하셔야 할 것 같습니다.
이전페이지에서 세션으로 유니크 값을 생성해 중복방지를 처리하더라도
클라이언트의 캐시가 남아있어 백스페이스키로 이전페이지가 보여집니다.
말짱 도루묵이란겁니다.
즉 이전페이지로 가게되면 클라이언트로 전송된 페이지가
불리워 지기 때문에 이미 세션으로 중복처리를 했더라도 도루묵 이더군요
심지어 각각의 페이지에 nocache 설정으로 해더파일에 선언했는데도
안되더군요. 쩝...
백스페이스키로 이전페이지를 왔을때
유저(클라이언트)의 페이지가 캐시로 저장된 페이지가아닌
서버측 페이지가 보여질수 있게(F5새로고침효과)
나타낼수 있는게 가능한지요?
고수분들의 한수가르침을 부탁드립니다.
W3C 표준를 위해
-
- 해커
- Posts: 691
- Joined: 2004 08 11 22:14 59
- Contact:
저도 제가 아는 한 열심히 답을 알려드리고 싶은데 안타깝네요... ㅜㅜ
하시고자 하는 것이 제가 알고있는 한에서는 불가능 한것 같습니다.
그리고 브라우저에서 그러한 것을 처리하려고 하면 문제가 발생할 수 있다고 생각되어서 클라이언트 환경에서의 컨트롤을 하지 마시고 서버측에서 처리하도록 말씀 드린 것입니다.
사용자가 백스페이스로 눌러서 뒤로 가는 것은 이전 히스토리 페이지를 보고 싶다는 것인데 그것을 컨트롤 할 수는 없을 것입니다. 사용자 컴퓨터에 설치되는 프로그램이 아니라 브라우져를 통해서 이루어지는 일이기 때문입니다.
백을 했을때 자료가 갱신 되어야 할 필요가 구체적으로 어떤 것인지 잘 모르겠네요. DB insert 가 일어나기 때문이라면 그러한 것은 javascript 로 처리 하면 안되고 서버측에서 체크를 해서 insert 가 일어나지 않게 처리하는 것이 맞습니다. 그리고 체크를 한다고 하더래도 사용자가 강제로 페이지를 리로드 하고 다시 값을 보내버리면 사실상 이러한 사용자의 행동을 막는 것은 불가능 합니다.
제가 알고 있기로는 그렇습니다. ^^;;
하시고자 하는 것이 제가 알고있는 한에서는 불가능 한것 같습니다.
그리고 브라우저에서 그러한 것을 처리하려고 하면 문제가 발생할 수 있다고 생각되어서 클라이언트 환경에서의 컨트롤을 하지 마시고 서버측에서 처리하도록 말씀 드린 것입니다.
사용자가 백스페이스로 눌러서 뒤로 가는 것은 이전 히스토리 페이지를 보고 싶다는 것인데 그것을 컨트롤 할 수는 없을 것입니다. 사용자 컴퓨터에 설치되는 프로그램이 아니라 브라우져를 통해서 이루어지는 일이기 때문입니다.
백을 했을때 자료가 갱신 되어야 할 필요가 구체적으로 어떤 것인지 잘 모르겠네요. DB insert 가 일어나기 때문이라면 그러한 것은 javascript 로 처리 하면 안되고 서버측에서 체크를 해서 insert 가 일어나지 않게 처리하는 것이 맞습니다. 그리고 체크를 한다고 하더래도 사용자가 강제로 페이지를 리로드 하고 다시 값을 보내버리면 사실상 이러한 사용자의 행동을 막는 것은 불가능 합니다.
제가 알고 있기로는 그렇습니다. ^^;;
-
- 해커
- Posts: 724
- Joined: 2005 01 31 22:33 55
- Location: 대한민국
- Contact:
Re: 답답하시네요
그건 불가능합니다.앤죠 wrote: 백스페이스키로 이전페이지를 왔을때
유저(클라이언트)의 페이지가 캐시로 저장된 페이지가아닌
서버측 페이지가 보여질수 있게(F5새로고침효과)
나타낼수 있는게 가능한지요?
고수분들의 한수가르침을 부탁드립니다.
불가능 하기 때문에 이전페이지로 돌아갔을 경우에 post로 넘어온 값이 다시 날아가지
않도록 프로그램을 만드셔야 합니다.
입력 -> 저장 -> 처리 후 화면
이런 순서일때 저장 부분에서 저장을 한후 메타태그를 통한 리프래쉬로 처리화면으로
새로고침을 한다면 처리화면에서 F5 키를 누르더라도 값이 다시 날아가지 않습니다.
다른페이지로 갔다가 다시 백스페이스로 다시 돌아오더라도 문제가 없죠.
즉 저장과 처리화면을 다른 파일로 만들어야 합니다.
저장파일에서 새로고침을 통해 저장파일의 히스토리는 남지 않게되는 것이죠.
뒤로가기와 새로고침을 막는 방법은 없기 때문에 뒤로가거나 새로고침을 하여도
문제가 없게 이런식으로 만드셔야 한다는 뜻이었습니다.
-
- 서포터즈
- Posts: 52
- Joined: 2005 01 28 11:12 17
- Contact:
아예 완전 재작성할 수도...
구글 메일을 써보시면 뒤로가기가 의도와는 다르게 된다는
거 아세요?
XMLHttpRequest()를 써서 님의 웹페이지를
완전히 자바스크립트로 구현해보아요..
클릭 하더라도 페이지는 그대로고 내용을
XMLHttpRequest로 불러와서 화면에 뿌려줘야 겠지요.
그러면 브라우저 백 버튼이 그걸 추적해서 뒤로 갈 수 없게
되지요..
*joke성 글이니 심각하게 생각하지 마시길...
저쪽으로 바꾸려면 완전 새로 설계 들어가야 됩니다.*
거 아세요?
XMLHttpRequest()를 써서 님의 웹페이지를
완전히 자바스크립트로 구현해보아요..
클릭 하더라도 페이지는 그대로고 내용을
XMLHttpRequest로 불러와서 화면에 뿌려줘야 겠지요.
그러면 브라우저 백 버튼이 그걸 추적해서 뒤로 갈 수 없게
되지요..
*joke성 글이니 심각하게 생각하지 마시길...
저쪽으로 바꾸려면 완전 새로 설계 들어가야 됩니다.*
Who is online
Users browsing this forum: No registered users and 3 guests