IE6, IE7, IE8 не отображают изображения, вставленные с использованием jquery .html, если пользователь не щелкнет правой кнопкой мыши -> «Показать изображение» (Flash также на странице) - PullRequest
2 голосов
/ 26 октября 2010

У меня возникла странная проблема, которая возникает в IE (6, 7 и 8), и когда Flash находится на странице: изображения отображаются с перерывами.

  • Обновление страницы несколько раз может илиизображение может не отображаться.
  • Приблизительно в 50% случаев изображение отображается
  • Если изображение не отображается, для изображения есть место, а при щелчке правой кнопкой мыши «Показать изображение» отобразит изображение .
  • Проблема не появляется в Safari, Firefox или Chrome.

Изображения вставляются на страницу с помощью:

$(document).ready(function()
{
 $('#MyDiv').html('<img src="tick_med.png" alt="tick">'+ // <-- displays intermittently
               'test'); // <-- this will always appear OK
});

Я пробовал:

  • Использование пяти разных изображений (jpg и png)
  • Использование разных версий IE
  • Использование локальных (mac MAMP) иудаленный сервер
  • Использование «.load (fileName)» вместо «.html»
  • Задержка функции «.html» на 5 секунд с использованием show (500) и функции обратного вызова.

Помогите!

Роб

Ответы [ 3 ]

2 голосов
/ 26 октября 2010

Это может быть проблема DOCTYPE.Если вы используете STRICT (возможно, также Transitional) DOCTYPE, вам нужно, чтобы тег был самозакрывающимся.

<img src="tick_med.png" alt="tick" />

Обратите внимание на закрывающую косую черту.

0 голосов
/ 01 ноября 2010

После недели недоумения над этим я наткнулся на обходной путь: добавьте задержку перед выводом любого контента, запускаемого Flash.До сих пор тестируется на IE8 с задержкой 50 мс.Ни в коем случае не идеальный ответ, поэтому я был бы рад, если бы кто-то смог улучшить это!

AFunctionCalledByFlash()
{
    $("#dummy2").toggle(50,function(){  // <--- this delay enables the image below to display properly in IE

        $(document).ready(function()
        {
             $('#Body').html('<div id="MyDiv"></div>')
             $('#MyDiv').html('<img src="tick_med.png" alt="tick">'); 
        });

    });
}

Исходя из моих настроек, я подозреваю, что эта проблема вряд ли затронет многих людей: у меня загружается некоторый контентна основе событий, вызванных Flash.

Несколько конкретных моментов на случай, если у кого-то возникнет проблема:

  • Ошибка наблюдается только в том случае, если Flash используется для запуска html-контента в другом месте настраницы с помощью вызова функции javascript.
  • Нет проблем с изображением, когда содержимое добавляется в раздел 'MyDiv' отдельно от вызова функции Flash
  • Задержка только изображения не решает проблему(согласно моему первоначальному вопросу) - родительские div должны быть отложены
0 голосов
/ 26 октября 2010

Если это происходит только в IE, вы можете включить атрибут defer в тег script, откуда запускается ваш код. Формат:

<script type="text/javascript" src="myscript.js" defer></script>

или в строгом формате DOCTYPE и XHTML вы можете его отобразить

<script type="text/javascript" src="myscript.js" defer="defer"></script>

Я не гарантирую, что это решит вашу проблему, но я бы по крайней мере попробовал это. Если это не сработает, вы также можете попробовать это в скрипте, который загружает Flash-ролик.

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