Проблема кэширования iframe src в firefox
У меня есть элемент iframe со случайным атрибутом scr. Когда я обновляю страницу каждый раз, iframe должен загружать страницу с различными параметрами запроса на основе атрибута src. Но в firefox, если я пытаюсь загрузить динамический URL-адрес в iframe, он всегда выполняет первый раз, когда запускается URL-адрес, хотя атрибут src динамически изменяется. Параметры запроса также не передаются правильно. Итак, как я могу решить эту проблему?
например:
<?php
$url = "http://localhost/test.php";
$rand_val = rand(1000, 9999);
echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>";
?>
Ответы
Ответ 1
У нас была та же проблема с кешированием firefox iframe src и отключением кэша на исходной странице, а также с ошибкой страницы iframe. Мы помещаем следующий код (код jQuery) в функцию onload iframe:
$(parent.document).find("iframe").each(function() {
// apply the logic only to the current iframe only
if(this.contentDocument == window.document) {
// if the href of the iframe is not same as
// the value of src attribute then reload it
if(this.src != location.href) {
this.src = this.src;
}
}
});
Ответ 2
Сообщается как ошибка firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048
одно обходное средство сбрасывает src iframe:
document.getElementById('iframe_id'). src= 'target_url';
Все еще будут два запроса: первый запрос ошибочен и отменен непосредственно перед вторым запросом, который является правильным.
Ответ 3
Ваш код в PHP выполняется один раз и отправляет содержимое в браузер. Когда вы обновляете страницу, код не запускается снова на сервере, потому что он обслуживается кешем. Таким образом, src iframe использует одно и то же случайное число.
Чтобы этого избежать, вам нужно отключить кеширование исходной страницы (а не iframe). Или у вас может быть случайное число, сгенерированное на стороне клиента (с помощью javascript), чтобы каждый раз был уникальным.