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

차이점은 무엇입니까

  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>



답변

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

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

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

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

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


답변

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

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

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


답변