Есть ли простой способ запретить браузеру загружать и отображать изображения, лучше всего с помощью тега волшебного стиля или javasctipe.
Дело в том, что я хотел бы немного подправить веб-сайт компании, чтобы его можно было использовать с мобильных устройств. Компания игровая, на главной странице около 5 МБ изображений (и их нельзя трогать). Они уже показывают смертельную медлительность на моем dsl, и они могут быть убийцей для тех, кто платит за свой GPRS за Мб;)
Код страницы не мой и трогать его тоже не стоит (вообще-то он должен быть написан с нуля, но сейчас это не в моем жесте) :)
Я думал о двух решениях:
1) Если бы был какой-то тег стиля (или, может быть, javascript - тот, который работал бы в мобильных браузерах), который не позволял браузеру загружать изображения и заставлял отображать альтернативный параметр вместо этого, я мог бы просто прикрепить этот стиль, если бы я обнаружил, что пользовательский агент - это какая-то известная мобильная вещь. или 2) Я мог бы немного настроить веб-сервер, чтобы проверить заголовок User-agent, и если клиент запрашивает изображение (.png, .gif и .jpg), вместо этого отправьте 404. У этого есть обратная сторона - я бы хотел разрешить пользователю просматривать изображения, если он действительно этого хочет.
Кажется, первое решение было бы лучшим - как вы, ребята, думаете? И есть ли способ сделать это с помощью javascript?
Я мог бы попытаться создать документ DOM, затем получить все элементы <img>
и заменить их src
каким-нибудь заполнителем, но будет ли это работать в большинстве мобильных браузеров (я полагаю, Opera Mini, Windows Mobile, базовый браузер Symbian от Nokia)? И игра с документом DOM была бы хорошим решением на мобильном устройстве (честно говоря, я не уверен, что это требования к памяти и процессору).
Я бы не стал полагаться на javascript или какой-либо другой метод на стороне клиента с мобильными браузерами. Большинство мобильных браузеров недостаточно хорошо поддерживают javascript.
Некоторое "разветвление" на стороне сервера, вероятно, будет правильным решением. И не забудьте отключить фоновые изображения css, пока вы на нем.
Почему бы не использовать альтернативные таблицы стилей? Я просто не знаю, насколько хорошо они поддерживаются мобильными браузерами.
Вы можете указать отдельный CSS для мобильных устройств:
<link rel = "stylesheet" media = "screen,projection,tv" href = "main.css" type = "text/css">
<link rel = "stylesheet" media = "handheld" href = "smallscreen.css" type = "text/css">
В этом CSS вы переопределяете отображение <img>
и всех фоновых изображений.
да, остается вопрос, как с этим справляются мобильные браузеры, проверю. Будет ли параметр отображать: нет препятствовать загрузке изображения браузером? Или он будет скачиваться, просто не отображаться?
Если вы переопределите свойства фонового изображения, они не загружаются. Что касается img-tag, я боюсь, что это зависит от браузера ... хотя любой достойный разработчик должен реализует его таким образом, чтобы загружалась только отображаемая графика.
Вы можете использовать htaccess для перенаправления запросов изображений, сделанных пользователями мобильных браузеров. Я не тестировал это, но он должен работать:
RewriteCond %{HTTP_USER_AGENT} (nokia¦symbian¦iphone¦blackberry) [NC]
RewriteCond %{REQUEST_URI} !^/images/$
RewriteRule (.*) /blank.jpg [L]
Этот код перенаправляет все запросы, сделанные Nokia, Symbian, iphone и Blackberry к файлам в папке изображений, в пустой файл изображения.
Это похоже на спуфинг вашего пользовательского агента. Если им действительно нужна полная версия, просто дайте им ее. Может быть, добавить предложение пользователям Blackberry пожаловаться производителю на отсутствие такой опции.
Какую платформу вы используете? Если это ASP.NET, есть ли у вас доступ к папке App_Browsers?