2010-03-08 3 views
4

현재 파이어 폭스에는 다른 모든 브라우저가 올바른 방식으로 작동하는 문제가 있습니다. 심지어 IE6!파이어 폭스와 자바 스크립트 리디렉션

내가하고 싶은 일은 서브 페이지로 리디렉션하지만 히스토리 항목을 남기는 것입니다. 내가 아는 한 URL을 다시 작성하는 방법은 두 가지가 있습니다.

  • window.location = "some.url"; - 기록 항목이있는 some.url로 리디렉션
  • window.location.replace ("some.url"); - 히스토리 입력없이 리디렉션

그래서 첫 번째 콘솔을 사용해야하고 모든 콘솔에서 테스트되었습니다.

지금이 질문의 이상한 부분의 종류가있다 : response_path가 올바르게 설정되어

jQuery("#selector").bind("submit", function() { 
    $.getJSON("some_cool_json", function(response) { 
    var redirect_path = response.path; 
    window.location = redirect_path; 
    }); 
    return false; 
}); 

, 내가 확인 : 콘솔에서 괜찮 았는데 같은 문장은, 일부의 jQuery 콜백 핸들러에 있지 않습니다 그것! 리디렉션이 올바르게 작동하고 있지만 기록 항목이 작성되지 않았습니다.

그 아이디어는 궁금하십니까? 대단 하시겠습니까! ;)

건배

답변

3

, 내가 시도를하려는 일이 될 것이다 : 아이디어는 "정상적인로"지정() "를 호출의 실행을 넣어하는 것입니다

jQuery("#selector").bind("submit", function() { 
    $.getJSON("some_cool_json", function(response) { 
    var redirect_path = response.path; 
    setTimeout(function() { 
     window.location.assign(redirect_path); 
    }, 1); 
    }); 
    return false; 
}); 

"이벤트 처리기,"getJSON "응답 함수의 컨텍스트에 대해 뭔가 이상한 경우가 있습니다. 이 함수 ("getJSON"응답)는 방금 DOM에 추가 된 <script> 블록의 코드를 실행하는 브라우저 컨텍스트에서 호출되므로 적어도 조금 이상합니다.

나는 그것이 효과가 있을지 모른다. 테스트 페이지를 설정하지 않았습니다.

+0

이상하게 들릴 지 모르지만 그게 다! 고맙습니다! jQuery 전문가가 내부에서 무슨 일이 일어나고 있는지 이해하는 것이 흥미로울 것입니다! ;) – xijo

+0

jQuery의 기능은 다음과 같습니다. JSON 서버에 어떤 함수를 호출 할지를 알려주는 매개 변수를 추가 한 후 URL을 소스로 사용하여 '

7

사용 assign() :

window.location.assign("http://..."); 

교체 (URL)
제공된 URL에서 하나 현재 문서를 교체합니다. 할당() 메소드에서 차이는 사용자를 의미 현재 페이지가 세션 역사에 저장되지 않습니다) (대체 사용 후에 이동하려면 뒤로 단추를 사용할 수 수 없음을 입니다 그것. 이 나에게 발생 된 경우

+0

안녕하세요 Henchman 및 답변 주셔서 감사 드리며, 나는 '할당'을 시도했음을 잊어 버렸지 만 작동하지 않았습니다! – xijo

+0

+1'assign()'은'window.location = "http : // ..."'보다 정확합니다. 그러나 이것이 일어나고있는 이유를 설명하지는 않습니다. –

+0

아마도 firefox는 window.location = ""?을 사용할 때 .replace()를 사용하고 있습니다! –