2012-08-24 5 views
1

사용자가 현재 페이지를 나가고 내 웹 사이트의 모든 페이지로 리디렉션하는지 여부를 감지하는 방법은이 이벤트를 처리 할 수있는 자바 스크립트 기능입니다 내 페이지에 25 개 이상의 링크가사용자가 페이지에서 리디렉션 할 의도가 있는지 감지합니다.

<script type="text/javascript"> 
if(//user clicks a link) 
confirm("do you want to continue ?"); 

</script> 

페이지

+0

'confirm'와':

jQuery를 이것은 (아주 기본적인 예) 같은 수 있습니다. 절대적으로 필요한 경우에만 사용하십시오. – futuregeek

답변

4

에있는 모든 링크를 사용자가 클릭이이 코드는 페이지의 링크를 모든 클릭을 차단한다면 확인할 수 있습니다 자신의 모든 자바 스크립트 함수입니다. 페이지에서 매우 특별한 사정이없는 한

$("a").click(function() { 
    // this.href will be the href of the link they clicked on 
    // return false from this function if you want to abort the click on the link 
}); 

참고로, 그것은 그들이 실제로 그들은 단지 클릭 링크로 이동 할 것인지 확인하는 사용자를 강제로 가지 불쾌한입니다. 모든 클릭을 확인해야하는 경우 웹 브라우저가 얼마나 끔찍한 지 상상해보십시오.

사용자가 onbeforeunload 이벤트를 사용하여 페이지를 떠날 지 묻는 일반적인 방법이 있습니다.

window.onbeforeunload = function(e) { 
    return 'Are you sure you want to leave?'; 
}; 

참고 : 매우 특별한 상황이없는 한이도 독이있다.

+0

아 맞다 !!!! 이 문제에 대해 생각해 봤어야하지만 onbeforeunload는 사용자에게만 메시지를 표시 할 수있는 이벤트이며 브라우저에서 2 페이지를 남기고 싶거나 내가 할 수있는 일에 도움이되지 않도록 브라우저에서 확인하도록하지 않을 것입니다. 이 대신에 이벤트를 트리거하는 몇 가지 하이퍼 링크를 지정하려면 모든 내 태그에 클래스를 제공하고 다음과 같이됩니다. $ (". redirected") click (function() {// do something}); 그런 식으로 해당 클래스의 태그 만 트리거됩니다. – Sora

+0

@Sora - '$ (". redirected") .Click (fn)'을 사용하여 일부 링크 태그로만 범위를 좁힐 수 있다면 좋을 것입니다. – jfriend00

+0

예 그냥 사용자가 링크를 모두 지정하지 않았는지 확인하고 싶습니다. 내가 얻을 수있는 성가신 결과를 볼 수 있습니다. – Sora

1
window.onbeforeunload = function(e) { 
    return 'Are you sure you want to leave?'; 
}; 

정상적인 이벤트는 아니므로 표준 방식으로 바인딩 할 수는 없습니다.

값을 확인 하시겠습니까? 이는 유효성 확인 프레임 워크에 따라 다릅니다. 사용자 경험에 정말 심하게 이동 alert`

$('input').change(function() { 
    if($(this).val() != "") 
     window.onbeforeunload = function(e) { 
      return 'Are you sure you want to leave?'; 
     }; 
}); 
+0

문자열을'window.onbeforeunload'에 할당하지 마십시오 - 함수를 할당합니다 문자열을 반환합니다. – jfriend00

+0

나쁘다! 이유가있다. 감사합니다 @ jfriend00 –

관련 문제