Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2014, 17:30
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Баг с загрузкой изображений
Доброго времени суток, уважаемые пользователи форума.

В общем, сделал AJAX-навигацию на сайте, т.е., при клике на ссылку, загружается контент с этого адреса ссылки, а адрес в браузерной строке меняется с помощью history.pushState.
Проблема в следующем, если возвращаемся по истории назад, а потом переходим по какой-нибудь ссылке, то новые изображения (которые не были ранее загружены) перестают загружаться и вместо них пустая область с рамкой и alt'ом изображения, как-будто бы его не существует.

Раньше уже замечал этот баг в ВКонтакте, но как-то не придавал этому значения пока сам не столкнулся с этим.

Кто-нибудь знает как побороть подобное? Буду благодарен за помощь.

З.Ы.: браузер Opera 12.
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2014, 05:26
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Неужели никто с таким не сталкивался?
Ответить с цитированием
  #3 (permalink)  
Старый 15.04.2014, 10:21
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Я с таким не сталкивался, но интересно,
Проверяли пути у изображений?
Что сервер вообще возвращает или же загрузка совсем не происходит?
__________________
.
Ответить с цитированием
  #4 (permalink)  
Старый 15.04.2014, 12:19
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

С путями всё в порядке, загрузка вообще не происходит. Видимо браузер думаю, что при возвращении в историю там уже ничего грузить не надо, мол типо всё уже должно быть в кэше.

Вот попробуйте зайти на чью-нибудь страницу в ВКонтакте, затем зайдите на какую-нибудь страницу из друзей этого пользователя, и у одного из этих друзей ещё потом зайдите на чью-нибудь страницу из друзей. А вот теперь нажмите браузерную кнопку "Назад", и как видите, в рандомном списке друзей этого пользователя - новые друзья которые не показывались ранее - у них аватары не загружаются. Надеюсь, я обьяснил понятно.
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2014, 15:20
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Где-то я про это вроде читал, но уже и не вспомню.

Попробуй пройтись по изображениям и заменить их все, используя replaceChild.
__________________
.
Ответить с цитированием
  #6 (permalink)  
Старый 15.04.2014, 15:33
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Как-то это не правильно будет, при каждом переходе на другую страницу пробегаться по всем изображениям и заменять их на самих себя, по крайней мере я так считаю.

Должно же быть другое, более правильное решение.
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2014, 15:51
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Как я понимаю это баг и как следственно с багами красиво не получится

Можешь ещё попробовать так:
img {
	content: url(attr(src));
}

Если уж тот вариант не нравится, но этот ещё хуже=)
__________________
.

Последний раз редактировалось Skipp, 15.04.2014 в 16:35.
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2014, 17:38
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Skipp
img {    content: url(attr(src));}
Так это даже работать не будет.

Во первых, потому что content работает совместно с ::after и ::before, во вторых, даже если и добавить ::after и ::before, то все равно не будет работать, так как они не работают с такими элементами как img, input и т.д.

Последний раз редактировалось ruslan_mart, 15.04.2014 в 17:41.
Ответить с цитированием
  #9 (permalink)  
Старый 16.04.2014, 13:16
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Ruslan_xDD,
Да, что-то я намудрил

Ну вообще это практически работает, в некоторых браузера, допустим в той же опере вот это работает:
<style type="text/css">
img {
 content: url('http://javascript.ru/forum/image.php?u=20699&dateline=1392129498');
}
</style>
<img />


Но с атрибутом почему-то не хочет связываться, возвращает пустое значение:*(
__________________
.

Последний раз редактировалось Skipp, 16.04.2014 в 13:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка изображений перед загрузкой KupueIIIKo Общие вопросы Javascript 30 02.10.2013 23:52
jquery-gp-gallery.js - разное отображение подгружаемых изображений frutality jQuery 1 09.09.2012 18:15
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Прелоадер. Загрузка всех изображений на сайте пред загрузкой. DorianLeroy Общие вопросы Javascript 5 28.07.2011 17:20
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11