Я не хочу устанавливать их в display:none;
со средствами массовой информации, потому что они все равно будут загружаться. Есть ли способ загрузить их, только если ширина устройства превышает 500 пикселей?Как предотвратить загрузку изображений с устройств определенной ширины?
ответ
Вы можете загрузить их все после того, как страницы, сам загруженным с помощью JavaScript, и игнорировать некоторые изображения, если window.innerWidth
меньше 500.
Специфика реализации будет определяться вашим собственным приложением, но я бы рекомендовал что-то вроде следующего:
Заменить все изображения с заполнителями и дать те, которые вы хотите скрыть определенный класс:
<img src="placeholder.png" class="gt500" data-source="realimage.png">
вы могли бы сделать что-то вроде (assumin г JQuery):
$(document).ready(function(){
if(window.innerWidth > 500) { return; }
$('img.gt500').each(function() {
$(this).attr('src', $(this).data('source'));
});
});
Что поменяет все заполнители для реальных изображений, но только если окно достаточно широк.
Вы не можете предотвратить загрузку изображения, кроме как удалить его из DOM или изменить его src. Даже тогда он уже начнет загрузку, поэтому, если он загрузится полностью, будет зависеть от того, как браузер его реализует, и я не знаю ответа на это.
Все, что я могу предложить, что вы префиксом все Суданский Красный Полумесяц изображение с #, то сделать что-то вроде этого:
var imgs = document.querySelectorAll('img[src^="#"]');
for (var i = 0; i < imgs.length; i++) {
imgs[i].setAttribute('src', imgs[i].getAttribute('src').substr(0));
}
если ширина экрана больше, чем определенное количество. Это мешает пользователям, у которых JavaScript отключен от просмотра ваших изображений, поэтому внимательно рассмотрите все плюсы и минусы.
Вы можете получить сломанные изображения на странице с помощью этой техники, хотя только на время, которое требуется для запуска скрипта. – beeglebug
Я бы, вероятно, сделал это на стороне сервера. WURFL - это база данных, которая часто используется для обнюхивания мобильных устройств, примером PHP является here. В настольном браузере веб-разработки и устройствах нюхание считается очень плохой практикой. Для мобильных устройств из-за большого количества устройств и их различных возможностей это часто является необходимостью. Я полагаю, что WURFL тестирует серверную часть пользовательского агента (среди прочего) для обнаружения устройства и затем возвращает кучу информации о нем (включая разрешение экрана), после чего вы можете использовать изображения разных размеров на основе этой информации.
Я не думаю, что есть способ чистого предотвращения загрузки изображения на интерфейсе. Вы можете пропустить все изображения с помощью javascript при загрузке документа и установить атрибут src в пустую строку, если их ширина больше 500 пикселей. Проблема заключается в том, что вам нужно будет убедиться, что все ваши изображения имеют определенные размеры в разметке, и даже тогда некоторые браузеры не будут сообщать ширину, пока изображение не закончит загрузку. Вы также не могли гарантировать, что изображения не начнут загружаться до того, как javascript запишет (а не все мобильные устройства поддерживают js или включили его). Это кажется мне ужасно хамским.
Я хотел бы попробовать что-то вроде этого:
<img src="" data="actualimagesource" />
Проверьте каждое изображение, либо на сервере или на стороне клиента: Если ширина сайта позволяет выводимое изображение, вытащить строку из «данных» и место это в атрибуте «src».
Очень похоже на: http://www.appelsiini.net/projects/lazyload
Решение Beeglebug гораздо более подробно, чем мое, я предлагаю посмотреть его в этой теме. –
- 1. Как предотвратить загрузку изображений QtWebkit?
- 2. предотвратить предварительную загрузку изображений?
- 3. предотвращает загрузку изображений приложений в галерею устройств?
- 4. Как предотвратить загрузку ширины lazy in kendo
- 5. Как предотвратить предварительную загрузку изображений в jssor?
- 6. Как предотвратить загрузку изображений в карма бегун
- 7. Как предотвратить загрузку фоновых изображений на слайдере изображения
- 8. Автоматическое изменение размера изображений после определенной ширины
- 9. Как предотвратить загрузку изображений и видеофайлов с моего сайта?
- 10. В jssor, возможно ли предотвратить загрузку изображений
- 11. Как предотвратить загрузку определенной DLL в мой процесс
- 12. Как предотвратить загрузку apk
- 13. Как предотвратить расширение div от определенной ширины страницы?
- 14. Как предотвратить загрузку изображений несколько раз при быстрой прокрутке сетки?
- 15. Как изменить размер изображений в пределах определенной ширины/высоты эскиза?
- 16. Как ускорить загрузку изображений?
- 17. Как оптимизировать загрузку изображений
- 18. Как предотвратить загрузку помощника RSpec
- 19. Как заблокировать загрузку определенной страницы?
- 20. Отложить загрузку изображений
- 21. Как предотвратить загрузку содержимого MKMapView?
- 22. Как оплатить текст определенной ширины?
- 23. Как предотвратить загрузку вредоносных файлов?
- 24. Как создать сетку определенной ширины?
- 25. Наложение изображений с определенной шириной
- 26. Как предотвратить загрузку неподписанных банок?
- 27. Как предотвратить загрузку приложения WPF?
- 28. Как предотвратить загрузку программы дважды?
- 29. Как предотвратить повторную загрузку файла?
- 30. Как предотвратить загрузку источника данных
Хммм ... То же, что мое предложение, но с данными.Вы можете выбрать только изображения с атрибутами источника данных, а не полагаться на класс? –
AFAIK не имеет встроенного селектора атрибутов данных, что означает, что вам нужно будет проходить через все изображения в DOM и отклонять их с помощью проверки внутри цикла. Это потребует меньшей разметки, но будет немного медленнее выполнять, так что, как вы предпочитаете, я полагаю. – beeglebug
Эй! жаль, что я не ответил раньше, но поскольку я использую Wordpress для этого, мне пришлось перезаписать некоторые функции мультимедиа, чтобы вставить источник данных в мои миниатюры. Кроме того, вместо '$ (this) .src = $ (this) .data ('source');' мне приходилось делать это в двух строках: 'var img_src = $ (this) .data ('source'); $ (this) .attr ('src', img_src); 'В любом случае, спасибо за помощь @beeglebug! –