window.location.href와 top.location.href의 차이점


93

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

또한 어느 곳을 사용할지.

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


내가 top.location.href를 사용할 때 .net MVC의 새 URL로 리디렉션해야한다는 것을 언급하는 것을 잊었습니다.
Egalitarian

답변:


125

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);


3
그것은 전화를 정확 별명 의를 ? 나는 소위 "전역"변수가 의 속성대한 속기 라고 생각 했지만 alias 는 같은 위치를 가리키는 독립 변수 라는 것을 의미합니다. top.location.hrefwindow.top.location.hrefwindow
just.another.programmer

25

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

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

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

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



7

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

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

참조 window.location:

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

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

window.location.href = url;

다음보다 선호됩니다.

window.location = url;

CORS 문제의 경우 작동하지 않습니다 ...이 문제를 해결하는 방법은 무엇입니까?
Pra_A 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.