2014-04-03 4 views
0

나는 이것이 어려운 대답은 아니지만 브라우저에서 페이지 새로 고침을 비활성화하려고한다는 것을 알고 있습니다. 나는 사용자가 테스트를 시작할 때 새 창에서 열리는 시험 응용 프로그램을 개발 중입니다. 하지만 사용자가이 테스트 페이지를 새로 고치지 않기를 바랍니다.JavaScript를 사용하여 브라우저 새로 고침을 피하십시오.

document.onkeydown = function (e) { 
    var key; 
    if (window.event) { 
     key = event.keyCode 
    } else { 
     var unicode = e.keyCode ? e.keyCode : e.charCode 
     key = unicode 
    } 
    switch (key) { //event.keyCode 
     case 116: 
      //F5 button 
      alert("11"); 
      event.returnValue = false; 
      key = 0; //event.keyCode = 0; 
      return false; 
     case 82: 
      //R button 
      if (event.ctrlKey) { 
       alert("11"); 
       event.returnValue = false; 
       key = 0; //event.keyCode = 0; 
       return false; 
      } 
    } 
} 

을하지만, 사용자가 위치/URL 표시 줄로 이동을 집중하고 F5 버튼, 페이지 새로 고침을 명중 할 때 :

나는 자바 스크립트 코드 아래 사용하여이 작업을 수행 할 수 있습니다. f5뿐만 아니라 shift + f5에서 브라우저는 동일한 동작을 보여줍니다. 이것을 피하는 방법?

도와주세요.

+0

누군가 다른 사람이 새 창을 닫고 다른 창을 닫으면 어떻게됩니까? – Huangism

+0

당신은 정말로 그것을 피할 수 없습니다. –

답변

0

이와 비슷한 것이 목표에 더 가까워 야합니다.

window.onload = function() { 
    document.onkeydown = function (e) { 
     return (e.which || e.keyCode) != 116; 
    }; 
} 
0

문제는 무엇 당신이하려고하는 것은 쉽게 파렴치한 또는 버그 웹 사이트에 의해 악용 될 수있는 웹 페이지를 브라우저 동작을 통해 너무 많은 제어 할 수 근본적으로 위험한 것입니다.

닫는 페이지, 새로 고침하는 페이지 등은 차단할 수 없습니다. 키보드 단축키를 차단하더라도 사람들은 항상 URL로 다시 이동할 수 있습니다.

더 좋은 질문은 왜 새로 고치고 수정하지 않았 으면 좋을까요? 예를 들어 테스트 시간에 대한 자바 스크립트 카운트 다운이 있기 때문에 데이터베이스에서 시작한 시간을 기록하고 정확한 시점에서 카운트 다운을 다시 시작하면이를 수정할 수 있습니다.

관련 문제