Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2014, 19:07
Новичок на форуме
Отправить личное сообщение для Eridani Посмотреть профиль Найти все сообщения от Eridani
 
Регистрация: 06.02.2014
Сообщений: 4

Картинка по умолчанию, если отсутвует реальная
Добрый день.

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

Вся проблема в чем - картинка существует по адресу www.site.ru/stream.png. Еесли в играющем файле она отсутствует, то по этому адресу выдается 404-ая ошибка.

Я данную картинку прописываю как
<img class="img_reload" src="www.site.ru/stream.png">

с авторефрешем каждые 30 секунд.
Границы картинки прописаны 150 на 150.

Соответственно, если картинка отсутствует, то остается пустая рамочка http://prntscr.com/4so974
Понятное дело, смотрится вообще не комильфо.

Вот у меня думалки не хватает прикинуть, как этот вопрос решить, чтобы при отсутствии картинки выдавалась какая-то дефолтная типа "NoPhoto".

Мне подсказывали, что можно написать скрипт проверки, если картинка присутствует, то выводить блок, а если нет, то display:none;

Не знаю, прокатит ли, но т.к. мои познания в яваскрипт печальны, я пришел сюда просить помощи или хотя бы совета.

Надеюсь на дельные советы
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2014, 19:31
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А нельзя на сервере подставлять пустую картинку, если реальная отсутствует? Это будет лучшим вариантом.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2014, 19:41
Новичок на форуме
Отправить личное сообщение для Eridani Посмотреть профиль Найти все сообщения от Eridani
 
Регистрация: 06.02.2014
Сообщений: 4

Сообщение от danik.js Посмотреть сообщение
А нельзя на сервере подставлять пустую картинку, если реальная отсутствует? Это будет лучшим вариантом.
Если бы...
К сожалению, нет, т.к. играющих треков очень много и проставить каждой картинку это не меньшая проблема.
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2014, 20:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Не каждой. Сервер же всё равно отдаёт на отсутствие 404, почему бы вместо этого ему не отдавать картинку-заглушку?

С помощью js как-то так, но это не гуд
<img class="img_reload" id="image" src="www.site.ru/stream.png">
<script>
(function(image, interval){
    var test = new Image();
    test.onload = function(){
        image.src = this.src;
        image.style.display = '';
    }
    test.onerror = function(){
        image.style.display = 'none';
    }

    setInterval(function(){
        test.src = 'http://www.site.ru/stream.png?' + Math.random()
    }, interval)
}(document.getElementById('image'), 30 * 1000))
</script>
__________________
29375, 35

Последний раз редактировалось Aetae, 03.10.2014 в 20:41.
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2014, 21:00
Новичок на форуме
Отправить личное сообщение для Eridani Посмотреть профиль Найти все сообщения от Eridani
 
Регистрация: 06.02.2014
Сообщений: 4

Сообщение от Aetae Посмотреть сообщение
но это не гуд
А почему?

Я уже думал, попробовать написать на php скрипт проверки по коду ответа сервера, если будет 404 выдавать, то дефолтную, если 200, то значит всё пучком, но т.к. сервер сейчас вообще ни одной ошибки не отдает, что-то с доменом, видимо, посему я проверить не могу ничего)
Ответить с цитированием
  #6 (permalink)  
Старый 04.10.2014, 02:30
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,126

если картинка загрузилась то она перекроет фон
Ответить с цитированием
  #7 (permalink)  
Старый 04.10.2014, 02:56
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Как вариант можно создать файл .htaccess с следующим содержанием
Options -indexes

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$ 
	RewriteRule .* noimage.jpg [L]
	
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_URI} \.(css)$ 
	RewriteRule .* nocss.css [L]
	
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_URI} \.(js)$ 
	RewriteRule .* nojs.js [L]
	
    RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
	
</IfModule>

здесь же, рядом с файлом положить файлы которые будут показываться при отсутствии(пустые или заглушки)
noimage.jpg, nojs.js, nocss.css
Ответить с цитированием
  #8 (permalink)  
Старый 04.10.2014, 04:57
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если делать редирект не внутренний, а внешний [R=301,L], то не будет проблем с кэшированием пустого изображения.
Кстати, насколько это надежно? Все браузеры следуют редиректам при загрузке картинок?
Сообщение от Poznakomlus
nojs.js, nocss.css
Ну а это то зачем?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 04.10.2014, 10:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Судя по всему тот сервер не его, расходимся пацаны.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 04.10.2014, 12:59
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от danik.js
Ну а это то зачем?
По стараюсь объяснить в двух словах. Из этого файла .htaccess видно, что все не файлы будут редиректится на точку входа index.php
Так вот, когда сервер не найдет файлы с расширениями css, js он обратится к index.php
А там, инициализация движка и так далее. Произойдет лишняя работа. Которая в конечном случае должна выкинуть код ответа 404
В вышеприведенном решении, я могу сделать css, js пустыми и картинку однопиксельную. Когда сервер не найдет файлы с этими расширениями. Он поставит файлы по дефолту noimage.jpg, nojs.js, nocss.css. Для них вернет код 200. При этом увеличится отклик и уберет лишнюю нагрузку, так как управление не будет передано в точку входа index.php

Последний раз редактировалось Vlasenko Fedor, 04.10.2014 в 13:03.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите символьный паккер, лучше чем base64 Deff Общие вопросы Javascript 50 02.08.2012 04:05
Комментарии под фотографиями kross jQuery 6 17.10.2011 15:16
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31