2012-01-30 4 views
0

페이지 이탈을 유발 한 요소를 찾으려고합니다. 그들이 href를 클릭한다고 가정 해 봅시다. JS가 시작한 위치 변경을 다른 전투에서 남겨 둘 것입니다. exit (즉, 앱 상태 저장) 전에 일부 처리를 수행하고 싶습니다. 나는 무엇을 시도했다페이지 이탈을 유발하는 요소는 무엇입니까?

:

$(window).bind("unload", function(e) { console.log("====EXIT===="); console.log($(this)); console.dir(e); }); 

어느 쪽도 아니 $ (이) 나 "E"(이벤트)를 발생 요소를 참조합니다.

  • $ (이) 가와 "E"는 빈 객체 "c.Event"

답변

0

저는 이것을 누르면 작동합니다.

$(document).ready(function(){ 

    $('a').click(function(event){ 
     var pageUrl = $(this).attr("href"); 
     if(pageUrl.indexOf('google.com') == -1 && !$(this).attr("rel") && pageUrl.indexOf('javascript')==-1){ 
      //only your domain, lightboxes, and javascripts, otherwise cancel event. 
      event.preventDefault(); 
      console.log('sorry dude no another site'); 
     } 
    }); 

}); 

시도해보십시오;

<a href="http://google.com">google</a> 
<a href="http://yahoo.com">another site</a> 
<a href="javascript:alert(1)">alert</a> 
<a href="http://www.gravatar.com/avatar/b46c1b6ff31e665600a62482f197622f?s=32&d=identicon&r=PG" rel="ligthbox">image</a> 
+0

언로드 및 beforeunload가 너무 기발해서이 변형이있었습니다. – mondo

+0

예, 브라우저가 언로드/beforeunload 이벤트를 건너 뛸 수 있고 자신의 상자 등을 사용할 수 있기 때문입니다. – siniradam

0

자바 스크립트 이벤트 "onBeforeUnload"입니다 및 해당 jQuery를 이벤트 'beforeunload'입니다 인쇄

  • 아무것도
  • 없다 :

    $(window).bind('beforeunload', function() { 
        confirm("You know you're leaving this page, right?"); 
    }); 
    

    편집 -

    어떤 요소로 인해 URL이 변경되었는지를 확인하는 유일한 방법은 페이지의 모든 요소를 ​​연결하는 것입니다. 예를 들면 : 당신의 논리를 수행 할 beforeUnload에서 - - 같은 href, data() 또는 html()

    var lastElementClicked; 
    
    $('a').click(function(){ 
        lastElementClicked = this; 
    }); 
    

    당신은 다음 lastElementClicked 객체의 속성을 사용할 수 있습니다.

    +0

    그래, 내가 시작 요소에 여전히 범위를 다시 방금 언로드에 가서없고, 그래서 하나가 너무하지만, 몇 가지 이유로 두 번 이벤트를 발생 것을 시도 (즉, "어떤 링크") – mondo

    +0

    @mondo : 업데이트 된 답변보기 –

    +0

    예, 이전 생각입니다. 조금 더 깨끗한 것을 기대했다. 이것을 시도 할 것이지만, 누군가가 이벤트 객체 자체로 그것을 할 수있는 아주 비밀스러운 방법을 알고 있기를 희망하면서 포스트를 조금 열어 두십시오. – mondo

    관련 문제