window.location.href, window.location.replace 및 window.location.assign의 차이점


128

차이점은 무엇입니까

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

나는 window.location.assign()현재 세션 기록을 대체하는 많은 포럼에서 읽었 으므로 브라우저의 뒤로 버튼이 작동하지 않습니다. 그러나 나는 이것을 재현 할 수 없습니다.

function fnSetVariable() {
    //window.location.href = "http://example.com";
    window.location.replace("http://example.com");
    //window.location.assign("http://example.com");
}

<a onmouseover="fnSetVariable();" 
   href="PageCachingByParam.aspx?id=12" >
   CLICK 
</a>

1
당신은 URL에 이전 게시물을 볼 수 있습니다 stackoverflow.com/questions/1865837/...는 것이 도움이 될 것입니다 희망

여기에 더 나은 설명입니다 : stackoverflow.com/a/847130/96656은
마티아스 Bynens

답변:


165

이것들은 같은 일을합니다 :

window.location.assign(url);
window.location = url;
window.location.href = url;

새 URL로 이동하기 만하면됩니다. replace역사에 새로운 기록을 추가하지 않고 URL에 다른 한편으로 탐색합니다에 대한 방법.

그래서, 당신이 그 많은 형태로 읽은 것은 정확하지 않습니다. 그만큼assign 방법은 기록에 새로운 기록을 추가합니다.

참조 : http://developer.mozilla.org/en/window.location


1
답변 해 주셔서 감사합니다. 브라우저 뒤로 버튼 문제를 해결하는 데 많은 도움이되었습니다.
산토 쉬 쿠마 patro

@blunderboy : 어쨌든 산사태에 의한 최고의 대답이므로 아무것도 바뀌지 않을 것입니다.
BoltClock

그래서 요점은 assign()무엇입니까? 이 답변과 문서에서 location = ....
Mitya

11

뒤로 버튼을 사용할 수 없다는 부분은 일반적인 오해입니다. window.location.replace (URL) 은 새 항목으로 덮어 써서 페이지 기록 목록에서 최상위 항목을 제거하므로 사용자가 특정 웹 페이지로 쉽게 돌아갈 수 없습니다. 이 기능은 전체 페이지 기록 목록을 지우지 않으며 뒤로 버튼이 완전히 작동하지 않게 만들지 않습니다.

내가 그 캔 변경 또는 덮어 쓰기 기록 목록 항목의 알고 매개 변수 (NO 기능도 조합 특정 절대적 위해 보유하고 있지 않습니다 - 브라우저는 일반적으로 단순히 심지어 전혀 수도있는 작업을 정의하지 않음으로써이 보안 제한을 impelement는 이외의 다른 항목에 영향을 페이지 기록 목록에서 하나. 나는 그런 기능이 존재한다면 할 수있는 악성 코드 비열한 것들의 정렬 어떤 생각을 떤다.)

뒤로 버튼이 작동하지 않게하려면 (아마도 "사용자 친화적"이 아님 : 정말로 원하는 것인지 다시 생각해보십시오 ) 새 창을 "열십시오". (당신은 "열기"팝업은도하지 않습니다 수 있습니다 너무 "뒤로"버튼을 ...하지만 팝업 요즘 매우 인기가 있습니다 :-) 당신은 사용자가 무엇을하는지에 상관없이 (보여주는 페이지를 유지하려면 다시 "사용자 친 화성"이 의심 스럽다), 매번 처음부터 다시 페이지를 완전히 다시로드하는 window.onunload 핸들러를 설정하십시오.


4
'내가 알고있는 기능이나 매개 변수의 조합은 히스토리 목록 항목을 변경하거나 덮어 쓸 수
없습니다.'...

6
소유하지 않은 브라우저 기록 항목을 변경하거나 덮어 쓸 수 없다는 것은 오랫동안 사용 되어 온 보안 규칙입니다 . HTML5는 단순히 그 규칙을 계속합니다.
Chuck Kollars 2014

오히려 요점이나 풍자를 놓쳤습니다. html5 및 역사 조회
SpYk3HH 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.