Проблема кэширования iframe src в firefox
У меня есть элемент iframe со случайным атрибутом scr. Когда я обновляю страницу каждый раз, iframe должен загрузить страницу с различными параметрами запроса, основанными на атрибуте src. Но в firefox, если я пытаюсь загрузить динамический URL в iframe, он всегда выполняет первый раз выполненный URL eventhough атрибут src изменяется динамически. Параметры запроса также не передаются правильно. Итак, как я могу решить эту проблему?
Например:
<?php
$url = "http://localhost/test.php";
$rand_val = rand(1000, 9999);
echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>";
?>
3 ответов:
У нас была та же проблема с 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; } } });
Об этом сообщается как об ошибке firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048
Одним из обходных путей является сброс src iframe: документ.getElementById ('iframe_id').src = 'target_url';
Еще будет два запроса: первый запрос неверен и отменен непосредственно перед вторым запросом, который является правильным.
Ваш код в PHP выполняется один раз и отправляет содержимое в браузер. При обновлении страницы код не запускается снова на сервере, так как он обслуживается кэшем. Таким образом, src iframe использует одно и то же случайное число.
Чтобы избежать этого, необходимо отключить кэширование исходной страницы (не iframe). Или вы можете сгенерировать случайное число на стороне клиента (с помощью javascript), чтобы оно было уникальным каждый раз.
Comments