2010-02-24 1 views
1

window.location 사용 방법을 알고 있습니다. 문제는, (적어도 FF로) 역사에서 온 페이지를 지우는 것입니다. 예를 들어, 페이지 A에 있습니다. B와 window.location으로 이동하여 C로 보냅니다. C 페이지에서 B를 클릭하지 않으면 A에서 끝납니다.JavaScript : 히스토리의 현재 페이지 (window.location 제외)를 대체하지 않고 새 URL로 이동

기록에서 현재 페이지를 지우지 않고 다른 페이지로 이동하는 다른 방법?

편집 : 방화범이 끌려서 코드를 실행하면 이런 일이 발생하지 않습니다.

는 여기에 문제를 보여줍니다 (는 실제 코드 아니라, 그래 내가 코드가 추한 것을 알고) 슈퍼 간단한 페이지입니다 :

<html> 
<head><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"> </script> 
<body> 
<div class="foo"></div> 
<a href="javascript:$('.foo').html('<scri'+'pt type=&quot;text/javascript&quot;>window.location = &quot;c.html&quot;</s'+'cript>');">b</a> 

EDIT2가 : jQuery를 문제이며 setTimeout는 대답이다. 다른 누군가가이 이상한 엣지 케이스에 빠져들 경우를 대비해 솔루션을 추가했습니다.

EDIT3 :이 예제는 테스트하기 쉽도록 단순화되었습니다. 실제 상황에서는 클릭 핸들러가 HTML을 반환하는 Ajax 호출을 작성하므로 window.location = whatever 만 작성하여 전체를 단순화 할 수는 없습니다. 이 코드는 HTML에 내장 된 서버에서 가져온 것입니다.

+0

사용중인 코드를 게시하면 도움이됩니다. 'window.location = url' 또는'window.location.replace (url)' –

+0

나는 둘 다 시도했다. 같은 결과. – noah

+1

왜이 커뮤니티는 위키입니까? –

답변

3

setTimeout입니다.

$(div).html('<script...> setTimeout(function() { window.location = url; },10); </script>'); 

이 문제가 없습니다. jQuery가 head 요소에 script 태그를 작성하여 인라인 스크립트를 실행하는 방식과 관련이 있어야합니다.

+0

'A' 태그의'href'에서 동적 스크립트 태그를 삽입해야합니까? 나는이 문제를 피할 수있는 다른, 덜 복잡한 방법이 있는지 궁금합니다. – Nicole

+0

??? 왜 자바 스크립트를 사용하여, 자바 스크립트 코드를 실행하는 타이머를 실행하는 자바 스크립트가 포함 된 스크립트 태그가있는 html을 삽입하고 있습니까? 왜 모든 것을 "window.location = url;"으로 바꾸지 않으시겠습니까? ? 예, 오른쪽으로 돌아 가기 위해 왼쪽으로 3 회 돌릴 수 있습니다 ...하지만 우회전 할 수도 있습니다. – gregmac

+0

예.유스 케이스는 HTML 컨텐트를 동적으로로드하지만로드가 실패하면 리디렉션해야하며 리다이렉션 할 위치를 결정하는 논리는 서버에 있으므로 실제로는이를 수행하는 가장 간단한 방법입니다. – noah

-1

위치 대신 location.href을 사용하십시오.

0

window.location.assign(URL)을 사용할 수 있습니다.

+0

아니, 같은 결과. – noah

0

Firefox 3.6에서이 동작이 보이지 않습니다. 귀하의 예를 들어, stackoverflow.com에서 나는 google.com에 갔다, 다음 거기에서 설정 방화범 창 콘솔 창을 사용 window.location = 'http://facebook.com'. 일단 거기에, 모두 세 내 브라우저 기록에했다.

+0

나는 심지어이 사이트에서만 동의한다. 다른 링크를 클릭하고 나서, 방화타 콘솔에서 "location = '/';" 그런 다음 뒤로 (두 번째 페이지로 이동)를 누르십시오. 동일한 작업과 비교하고 "location.replace ('/');" (이 페이지로 이동). – gregmac

+0

예, 방화범이 끌리지 않습니다. – noah

0

이것은 단지 해킹이며 작동하는지 모르겠다. URL을 설정 한 후 window.history.back(1)을 사용해보십시오. window.location = URL;

희망이 도움이 될 것입니다.

관련 문제