2011-10-17 2 views
2

어떻게하면 자바 스크립트 리디렉션을 무시하고/catch하는 것이 좋을까요? 예를 들어자바 리디렉션 캐치/오버라이드

:

window.location.href="http://example.com"; 

값 "http://example.com은"잡은 아마도 변경 될 것이다.

+0

도움이 될만한 자료가 있습니까? http://stackoverflow.com/questions/3522090/event-when-window-location-href-changes – Asken

답변

4

AFAIK이 이벤트를 포착 할 수 있지만 대상 URL은 변경할 수 없습니다. 리디렉션을 취소하려는 경우에만 사용자에게 메시지를 보낼 수 있습니다. 이를 위해 당신은 before unload event에 가입 할 수 있습니다 :

window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'Are you sure you want to leave the site?'; 
    } 

    // For Safari 
    return 'Are you sure you want to leave the site?'; 
}; 
+0

글쎄, 당신이 그것을 잡을 수 있다면, 목표를 바꿀 수 있습니다 : false를 반환하므로 이벤트를 취소하고 새 것을 발사하십시오. 올바른 URL은 ... – Boldewyn

+2

@ Boldewyn : Returnign'false'가 작동하지 않아야합니다. 문자열 만 반환해야합니다. – alex

+0

그건 사실이야, 나는 이미 목표를 달성하는 방법을 모르겠지만 그것을 시도했습니다. 나는이 대답을 최후의 수단으로 만 사용한다. – Trevor

1

당신은 __defineSetter()__를 사용하여 시도 할 수 있지만 호스트 오브젝트에 작동하지 않을 수 있습니다.

+0

감사합니다. 저는 이것을 어떻게 사용하는지 잘 모릅니다. 작은 예제를 제공 할 수 있습니까? – Trevor

0

이 사용하는 모든 코드 찾기 :

window.location.href="http://example.com"; 

을이로 변경 : 다음

openURL("http://example.com"); 

, 당신은 리디렉션을 제어 할 수있는이 기능을 구현하지만 당신이 원하는 :

function openURL(url) { 
    // examine url and decide if you want to modify it 
    window.location = url; 
} 
+1

일부 호출에는 제어 권한이 없으므로 임의의 리디렉션을 잡을 방법이 필요합니다. – Trevor

+0

일반 자바 스크립트의 모든 브라우저에서 임의의 자바 스크립트 리디렉션을 잡을 방법이 없습니다. – jfriend00

관련 문제