2010-07-15 5 views
13

У меня есть элемент iframe со случайным атрибутом scr. Когда я обновляю страницу каждый раз, iframe должен загружать страницу с различными параметрами запроса на основе атрибута src. Но в firefox, если я пытаюсь загрузить динамический URL-адрес в iframe, он всегда выполняет первый раз, когда запускается URL-адрес, хотя атрибут src динамически изменяется. Параметры запроса также не передаются правильно. Итак, как я могу решить эту проблему?Проблема кэширования iframe src на firefox

например:

<?php 

$url = "http://localhost/test.php"; 

$rand_val = rand(1000, 9999); 

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>"; 

?> 

ответ

4

У нас была такая же проблема с кешированием 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; 
     } 
    } 
}); 
+0

эй Раджив, ваше решение работает отлично. Спасибо за ответ – karuh24

+0

В этом решении исходный url всегда загружает первый, хотя ... – Dallin

1

Ваш код в PHP выполняется один раз и отправляет его содержимое в браузере. Когда вы обновляете страницу, код не запускается снова на сервере, потому что он обслуживается кешем. Таким образом, src iframe использует одно и то же случайное число.

Чтобы избежать этого, вам необходимо отключить кеширование исходной страницы (а не iframe). Или у вас может быть случайное число, сгенерированное на стороне клиента (с помощью javascript), чтобы оно было уникальным каждый раз.

+0

Я уже отключил кеширование на сервере, а также на стороне клиента, но он не работает. Я видел источник просмотра, случайный идентификатор генерируется должным образом каждый раз, а iframe src также изменяется правильно, но объект $ _REQUEST, похоже, не изменяется. – karuh24

3

сообщается как об ошибке в браузере Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

один обходной путь является перезапуске ГКЗ фрейма: document.getElementById ('iframe_id'). src = 'target_url';

Все еще будут два запроса: первый запрос ошибочен и отменен непосредственно перед вторым запросом, который является правильным.

+0

пять лет назад и ошибка (похоже?) Все еще присутствует в 41.0.2 ... pitty Я не могу реплицировать ее без конфиденциальных данных клиента:/ – Buksy

+0

Почти 6 лет спустя, и сегодня я обновился до FF 48. Еще проблема! -_- – indextwo

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