Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№124-02-2006 19:11:51

AlexeyBig
Участник
 
Группа: Members
Зарегистрирован: 24-02-2006
Сообщений: 7

Проверка отключенной графики в браузере

Добрый вечер. Вот появился вопрос, ответа пока не нашел... Может кто знает подскажите. Как и можно ли это вообще сделать, при помощи скрипта проверять отключена ли у посетителя при заходе на сайт графика в браузере.
За ранее спасибо.

Отсутствует

 

№225-02-2006 14:33:40

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Проверка отключенной графики в браузере

Можно. Сохраните изображение 1x1 пиксел в формате GIF, включите его в слой, например, с visibility: hidden; (если Вы примените display: none; , могут быть проблемы с некоторыми версиями Opera - изображение не загрузится в любом случае, разве что у пользователя будут отключены стили, но включены скрипты и изображения, что большая редкость), и пользуйтесь обработчиками onError и onLoad - например, можно назначить значение переменной в head и переопределить в обработчике. Если нужно объяснить подробнее, дайте знать.

Отсутствует

 

№325-02-2006 16:58:59

AlexeyBig
Участник
 
Группа: Members
Зарегистрирован: 24-02-2006
Сообщений: 7

Re: Проверка отключенной графики в браузере

Al_H пишет

Можно. Сохраните изображение 1x1 пиксел в формате GIF, включите его в слой, например, с visibility: hidden; (если Вы примените display: none; , могут быть проблемы с некоторыми версиями Opera - изображение не загрузится в любом случае, разве что у пользователя будут отключены стили, но включены скрипты и изображения, что большая редкость), и пользуйтесь обработчиками onError и onLoad - например, можно назначить значение переменной в head и переопределить в обработчике. Если нужно объяснить подробнее, дайте знать.

Извини, но я ничего совсем не понял... Мне нужно знать когда посетитель заходит на мой сайт в этот момент у него графика включена или выключена? А зачем слой с 1px гифом я так и не понял.

Отсутствует

 

№425-02-2006 20:44:45

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
Веб-сайт

Re: Проверка отключенной графики в браузере

Ну, например, если обработчик onload 1х1 гифа не сменил значение переменной, то значит графика отключена


"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№526-02-2006 02:50:33

AlexeyBig
Участник
 
Группа: Members
Зарегистрирован: 24-02-2006
Сообщений: 7

Re: Проверка отключенной графики в браузере

formatC'vt пишет

Ну, например, если обработчик onload 1х1 гифа не сменил значение переменной, то значит графика отключена

все гениальное просто :) спасибо.

Отсутствует

 

№626-02-2006 11:32:13

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Проверка отключенной графики в браузере

Только этот слой должен быть в коде в самом начале документа.
Можно смотреть значения двух переменных - переопределяемой в onLoad и в onError.

Отсутствует

 

№726-02-2006 20:57:38

AlexeyBig
Участник
 
Группа: Members
Зарегистрирован: 24-02-2006
Сообщений: 7

Re: Проверка отключенной графики в браузере

Al_H пишет

Только этот слой должен быть в коде в самом начале документа.
Можно смотреть значения двух переменных - переопределяемой в onLoad и в onError.

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

Отсутствует

 

№828-02-2006 13:22:45

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Проверка отключенной графики в браузере

Можно на самом деле сделать еще проще:

Выделить код

Код:

<script language="JavaScript" type="text/javascript">
<!--
var imagesOn=false;

var img1src='images/spacer.gif';
var img1=new Image();
img1.onerror=function (evt) {imagesOn=false; alert(this.src+" can't be loaded.");}
img1.onload=function (evt) {imagesOn=true; alert(this.src+" was loaded.");}
img1.src=img1src;
//-->
</script>

это нужно поместить внутрь head. Предполагается, что spacer.gif лежит внутри подпапки images и является изображением GIF 1x1 пиксел с 1 или 2 цветами в палитре. Предупреждение! значение переменной imagesOn будет доступно НЕ СРАЗУ после обработки кода, если Вы хотите им пользоваться, выставляйте setTimeout или вызывайте скрипт из onLoad тэга body.
Поскольку Вам нужна только переменная, а не оповещение, код будет выглядеть так:

Выделить код

Код:

<script language="JavaScript" type="text/javascript">
<!--
var imagesOn=false;

var img1src='images/spacer.gif';
var img1=new Image();
img1.onerror=function (evt) {imagesOn=false;}
img1.onload=function (evt) {imagesOn=true;}
img1.src=img1src;
//-->
</script>

Обратите внимание, никакого слоя не нужно, только скрипт.
Или, если мы с Вами решим уважать Internet Explorer, код нужно переделать так:

Выделить код

Код:

<script language="JavaScript" type="text/javascript">
<!--
var imagesOn=false;

function imgIsLoadedAlert(thisSrc) {
    alert(thisSrc+((imagesOn)?" is":" can't be")+" loaded");
}
function imgIsLoaded() {
    imagesOn=true;
    imgIsLoadedAlert(this.src);
}
function imgWasNotLoaded() {
    imagesOn=false;
    imgIsLoadedAlert(this.src);
}
var img1src='images/spacer.gif';
var img1=new Image();
img1.onerror=imgWasNotLoaded;
img1.onload=imgIsLoaded;
img1.src=img1src;
//-->
</script>

или без оповещения:

Выделить код

Код:

<script language="JavaScript" type="text/javascript">
<!--
var imagesOn=false;

function imgIsLoaded() {imagesOn=true;}
function imgWasNotLoaded() {imagesOn=false;}
var img1src='images/spacer.gif';
var img1=new Image();
img1.onerror=imgWasNotLoaded;
img1.onload=imgIsLoaded;
img1.src=img1src;
//-->
</script>

в современных браузерах работают оба варианта, но из-за ошибки в Internet Explorer второй вариант (с imgIsLoaded и imgWasNotLoaded) работает гораздо быстрее первого (при повторной загрузке страницы... точнее, первый работает гораздо медленнее второго).
Протестировал в 9 браузерах, в том числе в нескольких версиях Internet Explorer (начиная с 5.0, в 4.0 не тестировал), современном Netscape, Mozilla Firefox и Mozilla, Opera (начиная с 7.01 по 9.0TP2), Flock. Везде работает. В Konqueror собираюсь проверить позже.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]