2013-04-09 3 views
2

После того, как пользователь вошел в систему через всплывающее окно fancybox (javascript), я хочу перезагрузить родительскую страницу, чтобы они могли получить доступ к зарегистрированным функциям.Javascript: обновить родительскую страницу без полной перезагрузки

В настоящее время я делаю это с:

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

Это прекрасно работает, но единственная проблема в том, что он полностью перезагружает всю страницу: redownloads все CSS & Javascipt и т.д.

Все I хотите сделать, это перезагрузить страницу, а не полностью обновить. Как я могу это достичь?

(я не знаю точный адрес, потому что Логин может быть сделано с любой страницы с помощью FancyBox, поэтому я не могу жестко кодировать URL.)

ответ

5

Другой способ перезагрузки страницы я видел в facebook графа апи является следующее:

window.location = window.location 

или в вашем случае:

window.top.location = window.top.location 

Это решение перезагружает страницу, не пытаясь для повторной отправки запроса 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

Не указывайте true к reload, что говорит его всегда получать от сервера. И убедитесь, что заголовки кеширования для HTML, CSS и JavaScript настроены правильно, так что HTML всегда загружается (не кэшируется), но CSS и JavaScript получают кеширование (или, по крайней мере, только условно извлекаются через If-Modified-Since).

+0

Так что вместо 'window.top.location.reload (true)' Я просто использую 'window.top.location.reload (false)'? – Alasdair

+0

@Alasdair: вы можете указать 'false' или просто оставить его. –

+0

OK спасибо. Кажется, это работает. – Alasdair

Смежные вопросы