
Здравейте, от статиите, които четем знаем че потребителите са
оборудвани с последни версии браузъри и използват все повече Firefox, Opera и Chrome.
На практика се оказва че това не е така.
Описание на проблема:
Реших да тествам визията на сайта през различни браузъри. Отворих
browsershots.org и заредих сайта. Навсякъде с изключение на Internet
Explorer 5.5 и 6 се виждаше коректно. При предходните просто излизаше JavaScript грешка и не се появяваше никакво съдържание. Оказа
се че Internet Explore 5.5 и 6 имат проблем с показването на
страницата в случай че се променя динамично структурата на DOM чрез
Javascript/AJAX методи разположени в под-елемент на тага body. Именно тогава Internet Explorer < 7 дава грешка The Page cannot be Displayed или Internet Explorer cannot open the Internet site http://... Operation aborted
Ето и становището на Microsoft по въпроса: http://support.microsoft.com/kb/927917
Статистика:
След като погледнах доста статистики разбрах че от около 70% ползващи
Internet Explorer над 35% ползват IE6. За да не ощетявам тези
потребители въведох следните решения, след което тествах отново с
browsershots.org:
Решения:(изберете това, което работи при вас)
- да преместите срипта към края на body тага или в head частта.
- да извикате JavaScript-а си от функция, която се вика от window.onload
- да не задействате JavaScript ако версията на Internet Explorer < 7
- да добавите атрибута defer="defer" след скрипта.
Резултат: Статистиката показа над 30% увеличение на трафика на сайта. Успех!
P.S. Понякога се случва един JavaScript код да върви перфектно под Firefox, а под Internet Explorer да дава грешки. Ето някой често срещани грешки и как да ги фиксирате:
Expected identifier, string or number
масив: var img= {width:100, height:100,}
под Firefox - няма грешки, IE - грешка.
Решение(без запетайка в края. Запетайката кара интерпретатора да очаква следващ елемент.):
var img= {width:100, height:100}
object Expected при работа с previousSibling и nextSibling
var prev=el.nextSibling;
отново Firefox не показва грешки, а Internet Explorer дава грешка
Решение: винаги проверявайте дали съществува даден елемент:
if (el.nextSibling) {
//работа с елемента
var prev=el.nextSibling;
}
...
Първоначална проверка на елемент:
var el = document.getElementById("el_id");
if(el) {
//работа с елемента
}
Много добра онлайн проверка на JavaScript код в това отношение прави безплатният JSLint.
| Създай своя тема от тук |
Прочети по-късно
| Още статии за Уеб дизайн |