Как я могу остановить IE7-8 от кэширования отображения этой функции jQuery? - PullRequest
14 голосов
/ 13 мая 2011

Я использую функцию ниже, чтобы показывать случайные кавычки в #quotescontainer каждый раз, когда происходит изменение вкладки в пользовательском интерфейсе jQuery Tabs. Работает нормально во всем, кроме IE7-8 (конечно).

В IE7-8 происходит то, что отображается первая цитата, а вторая, случайная цитата появляется в #quotescontainer прямо под первой цитатой. Во всех других браузерах отображается только одна цитата, и она вращается при смене вкладки. Поэтому IE берет первую цитату в div.quote из quotes.html, показывает ее, а также показывает случайную цитату под первой цитатой.

Что я могу попытаться заставить IE правильно поменять местами кавычки? И не застрять на первой цитате?

Это проблема с кешем? Или проблема с функцией, всегда читающей quote1 и добавляющей quote2 под ней?

Я не использую кэширование в .htaccess. Я попытался добавить $.ajaxSetup({cache: false}); в функцию без удачи.

6/01/11 fix; проблема заключалась в некотором html внутри <div class="quote">quote text</div> в quotes.html. Каким-то образом это сломало IE7-8.

jsfiddle: http://jsfiddle.net/YAEe5/28/

Моя функция: с помощью Мэтью Ратцлоффа ниже

    select: function(event, ui) {

    var random = Math.floor(Math.random() * (Math.pow(2, 32) - 1));
  $('div#quotescontainer').load('http://mydomain.com/quotes.html?' + random, function() {
    var quotes = $(this).find('div.quote');
    var index = Math.floor(Math.random() * quotes.length);
    quotes.hide().eq(index).fadeIn();
  });

цитаты отображаются на странице в #quotescontainer

quotes.html содержит это:

<div class="quote">Quote1</div>
<div class="quote">Quote2</div>
<div class="quote">Quote3</div>

Ответы [ 5 ]

8 голосов
/ 13 мая 2011

Это полный, проверенный, рабочий пример того, что вы хотите сделать. Вы должны иметь возможность извлекать все внутри функции $(document).ready в обработчик select.

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
</head>
<script>
$(document).ready(function() {
  var random = Math.floor(Math.random() * (Math.pow(2, 32) - 1));
  $('div#quotescontainer').load('quotes.html?' + random, function() {
    var quotes = $(this).find('div.quote');
    var index = Math.floor(Math.random() * quotes.length);
    quotes.hide().eq(index).fadeIn();
  });
});
</script>
<div id="quotescontainer"></div>
</html>
1 голос
/ 13 мая 2011

Если no-cache или другие параметры кэширования не работают, вы можете попробовать

$('div#quotescontainer').html('')

после этого вызвать вашу функцию и загрузить

$('div#quotescontainer').load('http://mydomain.com/quotes.html',function
0 голосов
/ 21 мая 2011

Вам нужно загружать все кавычки из quotes.html каждый раз, когда вы переключаете вкладку?Я бы загружал кавычки «на готовом документе», чтобы все было скрыто, и выполнял только выбор на вкладке.Пример кода здесь: http://jsfiddle.net/YAEe5/40/

Протестировано на IE8 и в режиме Compat, похоже, работает.

0 голосов
/ 19 мая 2011

Это проблема кода, а не проблема браузера.

Код не требует кэширования данных.Итак, прекрати его использовать.Чтобы сделать это из своего кода, просто прекратите использовать команду HTTP GET (которая используется функцией .load ()).Загрузите html, json, скрипт или другие данные на ваш URL mydomain.com/quotes.html?отправляет обратно с глобальной функцией $ .post (), которая использует команду HTTP POST.Почтовые данные не кэшируются.Вы можете сделать это в событии загрузки страницы, назначив возвращаемые данные глобальному var, а затем отправив его вашему элементу div.Или что-то в этом роде.

Или, чтобы решить это с вашего клиента, откройте Internet Options IE.В разделе «История просмотров» (я сейчас использую IE9) нажмите кнопку «Настройки».В диалоговом окне выберите «Каждый раз, когда я захожу на страницу» вместо значения по умолчанию «Автоматически».Затем очистите кэш браузера (Ctrl + Shift + Delete) и перезагрузите страницу.

0 голосов
/ 13 мая 2011

Добавьте случайное число в конец этого URL: http://mydomain.com/quotes.html?rand=439786

Это сохранит ваш браузер от кеширования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...