Скрипт не работет в IE
Вот таблица стилей :
<style type="text/css"> #informers_selector_content>div{display:none;} #informers_selector_menu>span:hover{ text-decoration:underline; border-top:1px outset #d5d5d5; border-left:1px outset #d5d5d5; border-right:1px outset #d5d5d5; border-color:#d5d5d5; } </style> Вот JS <script type="text/javascript"> function setActive(obj,active){if(active==true){obj.style.display='block';}else{obj.style.display='none';}} function activate(obj,name){ var showid=new String(obj.id); var len=showid.length; var showid=showid.substr(2,len); var obj=document.getElementById(name+'_selector_content'); for (var childItem in obj.childNodes) { if (obj.childNodes[childItem].nodeType == 1){ if(obj.childNodes[childItem].id==showid){setActive(obj.childNodes[childItem],true);} else{setActive(obj.childNodes[childItem],false);} } } } function setTabs(name){ var obj=document.getElementById(name+'_selector_menu'); var len=obj.childNodes.length; for(i=1;i<len;i++){ var sObj=obj.childNodes.item(i); sObj.onclick=function(){activate(this,name);} } } window.onload=function(){setTabs('informers');} </script> И вот HTML : <div id="informers_selector_menu"> <span id="shrecomendate" onclick="activate(this,'informers');">Рекомендуем</span> <span id="shweather">Погода</span> <span id="shnews">Новости</span> <span id="shsoft">Софт</span> <span id="shhardware">Оборудование</span> <span id="shother">Другое</span> </div> <div id="informers_selector_content"> <div id="recomendate"> 1 </div> <div id="weather"> 2 </div> <div id="news"> 3 </div> <div id="soft"> 4 </div> <div id="hardware"> 5 </div> <div id="other"> 6 </div> </div> Итоги : 1) работет в OPERA в IE - нет. 2) при добавлении в DIV-ы с контентом вкладок (да, да 1,2,3,4,5,6) HTML-тегов перестаёт работаьб даже в OPERA ------------------------------------------ После изменения JS кода в IE при клике на 1-м спане (у которого id==shrecomendate) отображается див recomendate, у остальных - ничего не происходит при кликах на их div-ах. ------------------------------------------- Причина 2-й проблемы ясна - ошибка в CSS. Исправил |
Решил проблему
Проблему решил.
по пунктам: 1) определил что при sObj.onclick=function(){activate(this,name);} происходила ошбка. Выяснил, что под IE должно делаться через sObj.setЧто-тоТам. 2) попытался ввести проверку браузера через navigator.userAgent. Попытка с треском провалилась, т.к. и IE и OPERA вылетали. 3) Сделал на основе данного 2 скрипта - один - без изменений - второй через setЧто-тоТам. и заставил серверный скрипт по user-agent, определять, какой выдавать. 4) IE ОТКАЗЫВАЛСЯ РАБОТАТЬ, КАК ПРОКЛЯТЫЙ (хотя почему как, клятые MS)... Т.е. даже предназначеный ишаку метод не работал. 5) нашёл гениальный выход из положения. Т.к. sObj - спан, реализующий элемент меню вкладки, то получил его текст, и inneHTML-ем создал внутри него ещё спан, в котором в виде текста всё описывалось событие: Код для будущих поколений:D .... var text=sObj.innerText; sObj.innerHTML='<span onclick="var obj=document.getElementById('+"'"+sObj.id+"'"+');activate(obj,' +"'" + name + "'" + ');">'+text+"<\/span>"; .... Моё мнение : им в винду надо оперу или файрфокса засунуть и забыть про IE (мелкомягким). А также выплатить компенсацию всем JS-кодерам, скрипты которых стало возможно упростить |
Часовой пояс GMT +3, время: 20:58. |