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

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

Al_H пишет

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

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

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

formatC'vt пишет

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

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

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

Al_H пишет

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

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

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

Выделить код

Код:

<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 собираюсь проверить позже.