Programming

window.location.href = window.location.href와 window.location.reload ()의 차이점

procodes 2020. 5. 15. 21:00
반응형

window.location.href = window.location.href와 window.location.reload ()의 차이점


JavaScript의 차이점은 무엇입니까

window.location.href = window.location.href

window.location.reload()

기능?


올바르게 기억 하면 POST 데이터를 포함하지 않고 window.location.reload()POST 데이터로 현재 페이지를 다시로드하십시오 window.location.href=window.location.href.

아래 주석에서 @ W3Max가 언급 한 것처럼 window.location.href=window.location.hrefURL에 앵커 (#)가 있으면 페이지를 다시로드하지 않습니다 window.location.reload().이 경우에 사용해야합니다 .

또한 아래 @Mic에서 언급했듯이 브라우저 를 사용 하면 캐시를 건너 뛰고 서버에서 페이지를 다시로드 할 수 있도록 window.location.reload()추가 인수를 취 합니다. 반대를 수행하고 가능한 경우 캐시에서 페이지를로드합니다.skipCachewindow.location.reload(true)window.location.reload(false)


window.location.reload(true)브라우저가 캐시를 건너 뛰고 서버에서 페이지를 다시로드 한다고 말합니다 . window.location.reload(false)반대를 할 것입니다.

참고 : defaultwindow.location.reload()false


차이점은

window.location = document.URL;

URL에 해시 (#)가 있으면 (뒤에 무언가가 있거나없는 경우) 페이지를 다시로드하지 않지만

window.location.reload();

페이지를 새로 고침합니다.


부울 true를 다시로드에 추가하면 window.location.reload(true)서버에서로드됩니다.

이 부울이 어떻게 지원되는지는 확실하지 않습니다. W3Org 는 NS가 그것을 지원 하는 데 사용 했다고 언급 했습니다.

window.location.href와 document.URL 의 내용에 차이가있을 수 있습니다 -최소한 location.href와 비표준 및 더 이상 사용되지 않는 document.location 사이에 차이가 있었지만 리디렉션과 관련이 있었지만 정말 마지막 천년입니다.

문서화 목적으로 window.location.reload ()를 사용 하고 싶습니다.


언급했듯이 URL에 해시 (#)가있을 때 href를 수정하면 페이지가 다시로드되지 않습니다. 따라서 정규 표현식 대신 이것을 사용하여 다시로드합니다.

if (!window.location.hash) {
    window.location.href = window.location.href;
} else {
    window.location.reload();
}

이 질문을 통해 IE의 비정상적인 동작, 특히 IE9가 이전 버전을 확인하지 않은 것으로 나타났습니다. 그것은 보인다

window.location.reload();

새로 고침으로 인해 전체 화면이 1 초 동안 비워집니다.

 window.location = document.URL;

거의 눈에 띄지 않게 페이지를 훨씬 빠르게 새로 고칩니다.

좀 더 많은 연구와 피들러 실험을 window.location.reload()하면 부울을 전달했는지 여부에 관계없이 캐시를 무시하고 서버에서 다시로드 하는 것으로 보입니다. 여기에는 모든 자산 (이미지, 스크립트, 스타일 시트, 등) 다시. 따라서 페이지에서 HTML을 새로 고치려면 window.location = document.URL트래픽이 적고 훨씬 더 빠르게 반환됩니다.

브라우저 간 동작의 차이점은 IE9가 reload 메소드를 사용할 때 보이는 페이지를 지우고 처음부터 다시 작성하는 것처럼 보입니다 .FF와 크롬은 새 자산을 얻을 때까지 기다렸다가 다른 경우 다시 작성합니다.


Firefox (12.0)의 차이점은 POST에서 렌더링 된 페이지에서 reload ()가 경고를 표시하고 다시 게시하는 반면 URL 할당은 GET을 수행한다는 것입니다.

Chrome은 두 가지 모두에 대해 GET을 수행합니다.


JSF를 사용하여 세션이 만료 된 후 새로 고침에 문제가 있습니다. 페이지를 다시로드 한 후 PrimeFaces ViewExpiredException 및 약간의 조사를 통해 FireFox에서 한 가지 차이점을 발견했습니다.

전화 window.location.reload()는 FF에서 새로 고침 아이콘을 클릭하는 것과 같은 방식으로 작동합니다.

Cache-Control max-age=0

window.location.hrefURL 행에서 ENTER를 누르는 것과 같이 설정하는 동안 해당 행을 보내지 않습니다.

둘 다 GET으로 보내지지만 첫 번째 (재로드)는 이전 데이터를 복원하고 있으며 응용 프로그램의 상태가 일치하지 않습니다.


아니요, 없어야합니다. 그러나 일부 브라우저에는 차이가있을 수 있으므로 어떤 경우에는 작동하지 않을 수도 있습니다.


약 3 년 동안의 경험에서 나는 어떤 차이도 찾을 수 없었습니다 ...

편집 : 예, 여기 중 하나가 말했듯이 부울 매개 변수를 window.location.reload ()에 전달하는 것만 다릅니다. true 를 전달 하면 브라우저가 새로운 페이지를로드하지만 false 이면 캐시 버전이로드됩니다 ...


window.location.href, 이것은 안드로이드 5.1에서 webview에 생명을 구했습니다. Android에서이 버전의 location.reload ()로 페이지가 다시로드되지 않습니다.

참고 URL : https://stackoverflow.com/questions/2405117/difference-between-window-location-href-window-location-href-and-window-location

반응형