Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Баг с загрузкой изображений (https://javascript.ru/forum/misc/46545-bag-s-zagruzkojj-izobrazhenijj.html)

ruslan_mart 14.04.2014 17:30

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

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

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

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

З.Ы.: браузер Opera 12.

ruslan_mart 15.04.2014 05:26

Неужели никто с таким не сталкивался? :blink:

Skipp 15.04.2014 10:21

Я с таким не сталкивался, но интересно,
Проверяли пути у изображений?
Что сервер вообще возвращает или же загрузка совсем не происходит?

ruslan_mart 15.04.2014 12:19

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

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

Skipp 15.04.2014 15:20

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

Попробуй пройтись по изображениям и заменить их все, используя replaceChild.

ruslan_mart 15.04.2014 15:33

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

Должно же быть другое, более правильное решение.

Skipp 15.04.2014 15:51

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

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

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

ruslan_mart 15.04.2014 17:38

Цитата:

Сообщение от Skipp
img {    content: url(attr(src));}

Так это даже работать не будет. :)

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

Skipp 16.04.2014 13:16

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

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


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


Часовой пояс GMT +3, время: 03:35.