2013-04-09 6 views
2

사용자가 fancybox (javascript) 팝업을 통해 로그인하면 상위 페이지를 다시로드하여 로그인 한 기능에 액세스 할 수 있습니다.Javascript : 완전히 새로 고침하지 않고 상위 페이지 새로 고침

<a href="javascript:window.top.location.reload(true)" class="continue">Continue</a> 

이 잘 작동하지만, 유일한 문제는 완전히 전체 페이지가 다시로드한다는 것입니다 : 등 다시 다운로드 모든 CSS & javascipt을

모든 I

은 현재 내가 함께이 일을하고있다 전체 새로 고침이 아닌 정상적으로 페이지를 다시로드하는 것입니다. 이것을 어떻게 할 수 있습니까?

는 (로그인이 fancybox를 통해 모든 페이지에서 수행 할 수 있기 때문에 정확한 URL을 모르는, 그래서 URL을 하드 코딩 할 수 없습니다.)

답변

5

내가 페이스 북의 그래프 API를에서 본 페이지를 다시로드의 또 다른 방법은 다음과 같다 POST 요청을 다시 보내주십시오. 유용 할 수도 있습니다. 자세한 내용은 다음 SO question을 참조하십시오.

+0

아, 아주 빠릅니다. HTML 만 다시로드합니다. 정확히 내가 원하는 것, 고마워. – Alasdair

+0

불행히도 이것은 URL에 해시 태그가있을 때 (적어도 내 Firefox 26에서는) 작동하지 않는 것 같습니다. – tzot

+0

그러면 다음과 같이 쓸 수 있습니다 :'window.top.location = (window.top.location.hostname + window.top.location.pathname)'. 모든 브라우저 (소스 http://www.w3schools.com/jsref/obj_location.asp)에서 작동해야합니다 – decden

4

지정하지 마십시오 truereload에, 그게 알려줍니다 항상 서버에서 얻을 수 있습니다. 또한 HTML, CSS 및 JavaScript의 캐싱 헤더가 올바르게 설정되어 HTML이 항상 다시로드되고 (캐싱되지는 않지만) CSS 및 JavaScript가 캐싱되도록 (또는 적어도 If-Modified-Since을 통해 조건부로 검색되는 경우에만) 설정되도록하십시오.

window.location = window.location 

또는 귀하의 경우 :이 솔루션은 시도하지 않고 페이지를 다시로드

window.top.location = window.top.location 

+0

대신'window.top.location.reload (true)'대신'window.top.location.reload (false)'를 사용합니까? – Alasdair

+0

@Alasdair :'false'를 지정하거나 그냥 그대로 둘 수 있습니다. –

+0

감사합니다. 작동하는 것 같습니다. – Alasdair

관련 문제