[javascript] window.location.href와 top.location.href의 차이점

누군가는 나에게 사이의 차이를 말할 수 window.location.hreftop.location.href?

또한 어느 곳을 사용할지.

그리고 mvc에서 ajax 호출 후 리디렉션 할 때 어느 것이 더 좋을까요?



답변

window.location.href 현재 페이지의 위치를 ​​반환합니다.

top.location.href(의 별칭 인 window.top.location.href) 창 계층 구조에서 최상위 창의 위치를 ​​반환합니다. 창에 부모가 없으면 top자체에 대한 참조입니다 (즉, window=== window.top).

top프레임을 다룰 때와 다른 페이지에서 연 창을 다룰 때 모두 유용합니다. 예를 들어 test.html다음 스크립트로 호출 된 페이지가있는 경우 :

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

결과 경고에는 반환 되는 about : blank가 아닌 test.html의 전체 경로가 포함됩니다 window.location.href.

리디렉션에 대한 질문에 답하려면 window.location.assign(url);


답변

top개체는 프레임 내부에서 더 의미가 있습니다. 프레임 내부는 window현재 프레임의 창을 top나타내며 프레임이 포함 된 가장 바깥 쪽 창을 나타냅니다. 그래서:

window.location.href = 'somepage.html'; 로딩을 의미 somepage.html프레임 내부에 합니다.

top.location.href = 'somepage.html'; 로딩을 의미 somepage.html기본 브라우저 창에서 합니다.

다른 두 가지 흥미로운 개체는 selfparent입니다.


답변

top모든 현재 프레임 (나머지 창의 아버지)을 포함하는 창 개체를 참조합니다. window현재 window입니다.

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

따라서 top.location.href모든 프레임을 포함하는 “마스터”페이지 링크를 window.location.href포함하고 “현재”페이지 링크 만 포함 할 수 있습니다.


답변

첫 번째는 “뒤로”를 클릭하고 현재 페이지로 돌아갈 수있는 (또는 가능해야하는) 항목을 기록에 추가합니다.

두 번째는 현재 기록 항목을 대체하므로 다시 돌아갈 수 없습니다.

참조 window.location:

  • assign(url): 제공된 URL에 문서를로드합니다.

  • replace(url): 현재 문서를 제공된 URL에있는 문서로 바꿉니다. assign()방법 과 다른 점 replace()은 현재 페이지를 사용한 후에 는 세션 기록에 저장되지 않으므로 사용자가 뒤로 버튼을 사용하여 해당 페이지로 이동할 수 없다는 것입니다.

window.location.href = url;

다음보다 선호됩니다.

window.location = url;


답변