Проблема в том, что, когда вы указываете iframe
на текущий документ, документ, содержащий iframe
, загружается только один раз (и поэтому вы видите, что один и тот же интервал используется снова и снова) икогда iframe
загружает в него тот же файл, значение, которое он генерирует для интервала, не совпадает с тем, что контролирует загрузку iframe
.
. Я думаю, вам следует просто выполнитьAJAX-запрос для текущего файла внутри вашего setTimeout
.Таким образом, вы можете обработать ошибку сервера, просто повторив вызов AJAX.Это было бы намного проще.Нет iframe
.
(function ($) {
'use strict';
// Store possible delay values in an array
var possibleDelays = [1000, 5000];
function reload() {
$.ajax(location.href)
.done(function () {
$("h1").text(new Date().toLocaleTimeString());
// Success! Do it again!
setTimeout(reload, possibleDelays[Math.round(Math.random())]);
}).fail(reload); // When there's an error, try again
}
// Initiate the process with an interval that is generated right here.
setTimeout(reload, possibleDelays[Math.round(Math.random())]);
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1></h1>