2011-03-18 2 views
5

Я загружаю некоторые изображения, а затем их использую в лайтбокс. Проблема в том, что, хотя изображения загружаются, они не отображаются браузером.Предварительно загруженные изображения, не отображаемые в Chrome

Данная проблема относится к Chrome. Он сохранялся через Chrome 8 - 10, и я пытался и все время пытался исправить это и нигде не было.

Я прочитал эти же вопросы,
Chrome not displaying images though assets are being delivered to browser
2 Minor Crossbrowser CSS Issues. Background images not displaying in Google Chrome?
JavaScript preloaded images are getting reloaded

Какие все детали подобное поведение, но в Chrome для Mac. В то время как это происходит в Windows.

  • Все остальные браузеры кажутся прекрасными.
  • Если у вас открыт Firefox и Chrome, загрузите страницу в Firefox, а затем в Chrome появится изображение.
  • После того, как Вы вручную загрузили изображения, используя панель инструментов Webkit WebDev штуковина, они всегда появляются
  • Все ссылки, изображения и такие тонкие и работать
  • Очистка все от Chrome, кажется, не делать какие-либо разница (кеш, история и т. д.)

Если у кого-то есть идеи, это было бы фантастически полезно, так как я буквально все из вариантов здесь.

PS, Извините, если есть поздние ответы, я уезжаю в отпуск на неделю завтра! : D

Обновление Ниже приведена функция javascript, которая предварительно загружает изображения.

var preloaded = new Array(); 
function preload_images() { 
    for (var i = 0; i < arguments.length; i++){ 
     document.write('<'); 
     document.write('img src=\"'+arguments[i]+'\" style=\"display:none;\">'); 
    }; 
}; 

Update
Я все еще возникают проблемы с этим, и я удалил всю функцию предварительной загрузки изображений. Возможно, доставка таблицы стилей через document.write() не самый лучший способ?

+0

разум вставив код таким образом мы видим, как вы поджимать? – jlindenbaum

ответ

5

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

var preloaded = new Array(); 

function preload_images(){ 
    for (var x = 0; x < preload_images.arguments.length; x++) 
    { 
     preloaded[x]  = new Image(); 
     preloaded[x].src = preload_images.arguments[x]; 
    } 
} 

Javascript объект Image имеет много полезных функций, а также могут оказаться полезными:

http://www.javascriptkit.com/jsref/image.shtml

OnAbort()

Кодекс выполняется, когда пользователь прерывает загрузку изображения .

OnError()

код выполняется при возникновении ошибки с загрузкой изображения (то есть: не найден). Пример (ы)

OnLoad()

код выполняется, когда изображение успешно и полностью загрузки.

И тогда у вас также есть свойство complete, которое true/false сообщает вам, загружено ли изображение полностью (предварительно).

+0

Добавить щедрость за 20 часов :) –

+0

@ Давид, это сработало для вас? Рад, что это было, если бы это произошло :) –

+0

Да, похоже, что предварительная загрузка в Chrome немного сложнее, чем просто добавление изображений! –

2

Оказывается, Chrome учитывает HTTP-кеширование и отбрасывает любые предварительно загруженные изображения сразу после предварительной загрузки, если для кеширования задано значение «Истекло».

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

Чтобы исправить это я должен был установить следующее ниже:

 Response.Cache.SetExpires(DateTime.Now.AddYears(1)); 
     Response.Cache.SetCacheability(HttpCacheability.Public); 

     return File(jpegStream, "image/jpeg"); 
+0

Я создавал изображения через PHP, и я думал, почему Google хром отбрасывает предварительно загруженные изображения. Затем я узнал, что в прошлом я установил дату истечения срока. Спасибо за информацию чувак. – viji

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