복붙노트

[JQUERY] jQuery를 / 자바 스크립트를 사용하여 페이지 새로 고침 모든 형태의 방지

JQUERY

jQuery를 / 자바 스크립트를 사용하여 페이지 새로 고침 모든 형태의 방지

해결법


  1. 1.# 1 window.onbeforeunload 통해 구현 될 수있다.

    # 1 window.onbeforeunload 통해 구현 될 수있다.

    예를 들면 :

    <script type="text/javascript">
        window.onbeforeunload = function() {
            return "Dude, are you sure you want to leave? Think of the kittens!";
        }
    </script>
    

    사용자는 메시지가 표시하고 페이지에 머물거나 자신의 길을 계속 할 수있는 옵션이 제공됩니다. 이것은 일반적되고있다. 당신이 게시물을 입력하는 동안 페이지에서 멀리 이동하려고하면 스택 오버플로는이 작업을 수행합니다. 당신은 완전히 다시로드에서 사용자를 중지 할 수 없습니다,하지만 당신은 그들이 할 경우 실제 무서운 소리를 만들 수 있습니다.

    # 2는 다소 불가능하다. 당신이 세션 및 사용자 로그인을 추적 경우에도 올바르게 두 번째 탭을 검출되었다는 것을 보장 할 수 없습니다. 예를 들어, 어쩌면 내가 다음 닫기 그것은, 하나 명의 창을 열어 있습니다. 지금은 새 창을 엽니 다. 당신은 가능성이 이미 첫 번째 폐쇄에도 불구하고, 두 번째 탭으로 그것을 감지 할 것입니다. 이제 그들은 그것을 폐쇄하기 때문에 사용자는 첫 번째 창에 액세스 할 수 있으며, 당신이 그들을 거부하고 있기 때문에 그들은 두 번째 창에 액세스 할 수 없습니다.

    사실, 내 은행의 온라인 시스템은 2 할 진짜 열심히 시도하고 상황은 위에서 설명 된 모든에게 시간을 발생합니다. 나는 다시 은행 시스템을 사용하기 전에 서버 측 세션이 만료 될 때까지 나는 보통 기다려야한다.


  2. 2.당신은 상쾌한에서 사용자를 방지 할 수 없으며, 당신은 정말 시도해야한다. 이 솔루션이 필요한 이유를 다시 가야 루트 문제는 여기에 무엇? 거기에 시작하고 문제를 해결 갈 수있는 다른 방법을 찾을 수 있습니다. 아마 당신은 당신이 당신이 이러한 솔루션을 찾는 데 도움이이 작업을 수행 할 필요가 있다고 생각하는 이유를 자세히 설명이다.

    당신은 상쾌한에서 사용자를 방지 할 수 없으며, 당신은 정말 시도해야한다. 이 솔루션이 필요한 이유를 다시 가야 루트 문제는 여기에 무엇? 거기에 시작하고 문제를 해결 갈 수있는 다른 방법을 찾을 수 있습니다. 아마 당신은 당신이 당신이 이러한 솔루션을 찾는 데 도움이이 작업을 수행 할 필요가 있다고 생각하는 이유를 자세히 설명이다.

    기본 브라우저 기능을 깨고 F5와 인터넷 작품과 새로 고침의 99.999999999 % 이상이 사용자, 당신은 중단하지 않아야 하나의 기대는, 좋은 아이디어 적이 없다.


  3. 3.비활성화 F5 키의 좋은 생각이지만 아래로 JQuery와에 그것을 할 수 있습니다.

    비활성화 F5 키의 좋은 생각이지만 아래로 JQuery와에 그것을 할 수 있습니다.

    <script type="text/javascript">
    function disableF5(e) { if ((e.which || e.keyCode) == 116 || (e.which || e.keyCode) == 82) e.preventDefault(); };
    
    $(document).ready(function(){
         $(document).on("keydown", disableF5);
    });
    </script>
    

    이 의지의 도움을 희망!


  4. 4.돌아 가기 CGI의 OLE 일 우리는 다양한 백엔드 작업을 트리거 할 여러 가지 형태를 가지고 있었다. 등 텍스트 그룹에 대한 알림, 인쇄 작업, 데이터의 농업, 등

    돌아 가기 CGI의 OLE 일 우리는 다양한 백엔드 작업을 트리거 할 여러 가지 형태를 가지고 있었다. 등 텍스트 그룹에 대한 알림, 인쇄 작업, 데이터의 농업, 등

    사용자는 말을 한 페이지에 있었다면 ... "잠시 기다려주십시오 약간의 시간이 걸릴 수있는 몇 가지 거대한 작업을 수행.". 그들은 히트 REFRESH에 가능성이 더 높았다 이것은 나쁜 것!

    왜? 있기 때문에 더 느린 작업을 트리거하고 결국 전체를 수렁 것이다.

    해결책? 그들의 양식을 할 수 있도록합니다. 그들의 양식을 제출하면 ... 당신의 일을 시작하고 대기하도록 지시 다른 페이지로 직접.

    어디 중간에 페이지가 실제로 작업을 시작하는 데 필요한 된 양식 데이터를 개최했다. 대기 페이지는하지만 자바 스크립트의 역사 파괴가 포함되어 있습니다. 그들은 모두 그들이 원하는 대기 페이지를 다시로드 할 수 있으며 그 WAIT 페이지 만 WAIT 자체에 필요한 양식 데이터를 포함로 백그라운드에서 시작 원래 작업을 트리거하지 않습니다 그래서.

    의미가 있기를 바랍니다.

    역사 파괴 기능은 BACK을 클릭 한 다음뿐만 아니라 상쾌한에서 그들을 막았다.

    그것은 매우 원활한이고 비영리 아래로 상처 때까지 많은 많은 년 동안 큰했다.

    예: 수집 모든 정보와 제출이 트리거 백엔드 작업 - FORM ENTRY.

    양식 항목에서 응답 - 반환 HTML이 수행 정적 대기 페이지 및 / 또는 POST로 리디렉션 / 다른 형태 (대기 페이지)에 도착.

    WAIT 페이지 - 가장 최근의 역사를 파괴하는 페이지뿐만 아니라 자바 스크립트를 기다릴 관련 FORM 데이터를 포함 만. 등 (-1 또는 -2) 가장 최근 페이지를 파괴하지만, 여전히 그들의 원래 FORM 입력 페이지로 돌아갈 수 있습니다.

    그들은 당신의 WAIT 페이지에서 일단 그들이 원하는 그들만큼 새로 고침을 클릭 할 수 있으며 백엔드에 원래 FORM 작업을 산란하지 않습니다. 대신, META을 받아 들여야 당신의 WAIT 페이지는 항상 작업의 상태를 확인할 수 있도록 자체를 새로 고침 시간이 초과되었습니다. 자신의 작업이 완료되면, 그들은 당신이 원하는 whereever에 대기 페이지에서 멀리 리디렉션됩니다.

    그들이 새로 고침 수동 않으면 ... 그들은 단순히 거기에 자신의 작업 상태를 한 번 더 검사를 추가.

    희망이 도움이. 행운을 빕니다.


  5. 5.아니, 없다.

    아니, 없다.

    나는 확신 JS에서 새로 고침 버튼을 클릭을 차단하는 방법은 없습니다거야, 거기 경우에도, JS는 해제 할 수 있습니다.

    당신은 아마 (새로 고침 방지) 당신의 X에서 돌아 단계로 (즉 수 있습니다 무엇이든) Y에 다른 해결책을 찾아야한다.


  6. 6.수 (2) 사용자가에 종사하는 각 세션에 대한 사용자 정의 하트 비트 (웹 소켓, socket.io, 등 등) 소켓 구현을 사용이 가능합니다. 사용자 시도가 다른 창을 열 경우, 당신은 자바 스크립트 처리기 검사를 오류 메시지와 함께이 괜찮은지 어떤지 서버, 다음 응답한다.

    수 (2) 사용자가에 종사하는 각 세션에 대한 사용자 정의 하트 비트 (웹 소켓, socket.io, 등 등) 소켓 구현을 사용이 가능합니다. 사용자 시도가 다른 창을 열 경우, 당신은 자바 스크립트 처리기 검사를 오류 메시지와 함께이 괜찮은지 어떤지 서버, 다음 응답한다.

    그러나, 더 나은 솔루션이 구글 워드 프로세서처럼 가능하면 두 개의 세션을 동기화하는 것입니다.


  7. 7.문제 # 2는 이제 BroadcastAPI를 사용하여 해결할 수 있습니다.

    문제 # 2는 이제 BroadcastAPI를 사용하여 해결할 수 있습니다.

    순간 그것은 크롬, 파이어 폭스, 오페라에서만 사용할 수 있습니다.

    var bc = new BroadcastChannel('test_channel');
    
    bc.onmessage = function (ev) { 
        if(ev.data && ev.data.url===window.location.href){
           alert('You cannot open the same page in 2 tabs');
        }
    }
    
    bc.postMessage(window.location.href);
    
  8. from https://stackoverflow.com/questions/3527041/prevent-any-form-of-page-refresh-using-jquery-javascript by cc-by-sa and MIT license