jQuery. Загрузить импорт специальных символов - PullRequest
2 голосов
/ 27 августа 2010

У меня сейчас ошибка ошеломляющая. Я использую функцию .load в jQuery для загрузки изображений для слайд-шоу и получаю кучу ошибок ниже по тегу img, в который я импортирую URL. Я сделал все возможное, чтобы продемонстрировать свою функцию и разметку ниже. Я не получаю ошибку ни в одном из современных браузеров, но IE выдает мне ошибки

     $('a').click(function(e){
    $(trainFull).fadeOut(400, function(){
         jQuery(trainFull[0]).load('http://img.jpg", function(){
          jQuery(this).hide().attr('src', 'http://img.jpg").fadeIn(400);
   });



<img alt="Train Full" src="http://img.jpg" ">
<img xmlns="http://www.w3.org/1999/xhtml">�����JFIF���d�d�����Ducky�����(�����Adobe�d���������--etc, etc, etc/>

1 Ответ

1 голос
/ 27 августа 2010

Если я правильно вас понимаю, вы пытаетесь предварительно загрузить изображение с помощью оболочки jQuery XMLHttpRequest (load()). Это ... вряд ли будет хорошо работать .

То, что вы видите, это IE, пытающийся интерпретировать двоичные данные изображения как текст (с предсказуемо плохими результатами), jQuery, пытающийся вставить их в ваш элемент <img>, и IE, пытающийся отобразить их. Хотя это, вероятно, удается предварительно кэшировать изображение, это неправильный инструмент для работы ... и, как вы уже продемонстрировали, инструмент, который может терпеть неудачу .

К счастью, есть более простые способы. Большинство браузеров предоставляют встроенную поддержку для загрузки изображений и уведомления скрипта об их загрузке. Например:

$('<img />') // detached image, used to pre-load
    .attr('src', 'http://img.jpg') // tell it which image to load
    .load(function() // attach a callback to inform us when it's loaded
    {
      // within the callback, "this" refers to the temporary image element
      // that has just finished loading its source

      // now that the image is in the cache,
      $(trainFull[0])
        .attr('src', this.src) // let our on-page image display it
        .fadeIn(400); // and show that
    });

Если вы хотите больше узнать об этом, я рекомендую начать с: jQuery ajax images preload .

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