2016-03-16 2 views
2

Во время тестирования пути в Firefox, чтобы перезагрузить страницу HTML без кэширования, я включил следующий фрагмент код в моем коде:Освежающих страниц с помощью JS фрагмента кода

<script> 
window.setTimeout(function() { 
    location.reload(false); 
}, 5000); 
</script> 

Это перезагружает страницу через 5 секунд, однако я получите сообщение: «Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая будет повторять любые действия (например, поиск или подтверждение заказа), которые были выполнены ранее».

Если есть способ сделать тихое обновление через Javascript, тот, который не отображает приглашение? Например, если я использовал refresh Meta tag (HTML), мой браузер тихо обновляется. Я хочу приблизиться к такому же опыту, но через JS (и без кеша). BTW mine - это веб-приложение Django, и я добавляю JS-код в свой шаблон Django.

+0

Это стандартное поведение для защиты людей от предоставления информации формы более чем один раз (например, предотвратить двойные платежи в электронная торговля). Попробуйте указать Javascript на «новую» страницу: 'window.location.href = '/';' - Я не уверен, соответствует ли это вашему требованию кэширования, поэтому комментарий не отвечает. – Lewis

+0

@lewis: это не совсем моя домашняя страница, поэтому мне придется дать другой href. Но я вижу вашу мысль, позвольте мне попробовать. –

+0

Теперь отправлено как ответ с исправлением без кэширования. – Lewis

ответ

0

Это стандартное поведение, которое защищает людей от предоставления информации о форме более одного раза (например, предотвращает двойные платежи в системе электронной торговли). Попробуйте указать Javascript, чтобы перейти на «новую» страницу:

Попробуйте использовать это, установив URL-адрес самостоятельно;

window.location = "my.url/index.html?nocache=" + (new Date()).getTime(); 

Ответ заимствован отсюда, где есть и объяснение, почему это работает ->How can I force window.location to make an HTTP request instead of using the cache?

+0

Это работает, я собираюсь отметить его. Я не думаю, что в этом случае я могу избавиться от проблем с «обратной кнопкой», не так ли? То есть Я могу просмотреть содержание обновления страницы, если я просто нажму кнопку «Назад». –

+0

Какая у вас проблема с кнопкой «Назад»? - Насколько я знаю, это должно обрабатывать страницы в обычном режиме, т. Е. Действовать так же, как если бы вы нажали ссылку A. – Lewis

+0

Я действительно задал отдельный вопрос о том, что здесь: http://stackoverflow.com/questions/36043335/back-button-on-browser-making-no-cached-page-accessible –

0

Вы пробовали location.reload (true)? Если установлено значение true, он всегда будет перезагружаться с сервера. Установив значение false, он сначала посмотрит на кеш.

+0

Shilly, о, я думал, что установить его в true означает, что он всегда будет перезагружаться с сервера? –

+0

Вот что я сказал. Установите значение true, оно всегда будет перезагружаться с сервера. Разве это не то, что нужно, так как ваше первое предложение: «... перезагрузить HTML-страницу без кеширования».? Я надеюсь, что перезагрузка с сервера удалит всплывающее окно подтверждения. (Но это не сделает запрос почты снова.) – Shilly

0

Вы получаете это приглашение, потому что попросите перезагрузить запрос POST. Вы всегда должны получить эту подсказку при перезагрузке POST запроса, так как это не safe method

Однако, если вы хотите, вы можете явно повторно отправить POST запрос (хотя вы, возможно, трудность, чтобы найти обратно данные POST, переданные ранее) , Или прямо отправьте запрос GET по тому же самому URL-адресу.

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