>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Проверка отключенной графики в браузере http://forum.mozilla-russia.org/viewtopic.php?id=8597 |
AlexeyBig > 24-02-2006 19:11:51 |
Добрый вечер. Вот появился вопрос, ответа пока не нашел... Может кто знает подскажите. Как и можно ли это вообще сделать, при помощи скрипта проверять отключена ли у посетителя при заходе на сайт графика в браузере. |
Al_H > 25-02-2006 14:33:40 |
Можно. Сохраните изображение 1x1 пиксел в формате GIF, включите его в слой, например, с visibility: hidden; (если Вы примените display: none; , могут быть проблемы с некоторыми версиями Opera - изображение не загрузится в любом случае, разве что у пользователя будут отключены стили, но включены скрипты и изображения, что большая редкость), и пользуйтесь обработчиками onError и onLoad - например, можно назначить значение переменной в head и переопределить в обработчике. Если нужно объяснить подробнее, дайте знать. |
AlexeyBig > 25-02-2006 16:58:59 |
Al_H пишет
Извини, но я ничего совсем не понял... Мне нужно знать когда посетитель заходит на мой сайт в этот момент у него графика включена или выключена? А зачем слой с 1px гифом я так и не понял. |
formatC'vt > 25-02-2006 20:44:45 |
Ну, например, если обработчик onload 1х1 гифа не сменил значение переменной, то значит графика отключена |
AlexeyBig > 26-02-2006 02:50:33 |
formatC'vt пишет
все гениальное просто спасибо. |
Al_H > 26-02-2006 11:32:13 |
Только этот слой должен быть в коде в самом начале документа. |
AlexeyBig > 26-02-2006 20:57:38 |
Al_H пишет
да теперь я понял, если тебя не затруднит приведи код своего решения, что бы окончательно понять. Саму мысль я понял, а вот как это реализовать в виде кода, пока что то не выходит, может я не совсем правильно понял суть выполнения скрипта... |
Al_H > 28-02-2006 13:22:45 |
Можно на самом деле сделать еще проще: Выделить код Код:<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> Обратите внимание, никакого слоя не нужно, только скрипт. Выделить код Код:<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) работает гораздо быстрее первого (при повторной загрузке страницы... точнее, первый работает гораздо медленнее второго). |