Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2009, 16:13
Профессор
Отправить личное сообщение для alexKniaz Посмотреть профиль Найти все сообщения от alexKniaz
 
Регистрация: 14.10.2008
Сообщений: 186

Скрипт не работет в 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. Исправил

Последний раз редактировалось alexKniaz, 19.08.2009 в 17:19.
Ответить с цитированием
  #2 (permalink)  
Старый 20.08.2009, 01:57
Профессор
Отправить личное сообщение для alexKniaz Посмотреть профиль Найти все сообщения от alexKniaz
 
Регистрация: 14.10.2008
Сообщений: 186

Решил проблему
Проблему решил.
по пунктам:
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-ем создал внутри него ещё спан, в котором в виде текста всё описывалось событие:
Код для будущих поколений
....
var text=sObj.innerText;
sObj.innerHTML='<span onclick="var obj=document.getElementById('+"'"+sObj.id+"'"+');activate(obj,' +"'" + name + "'" + ');">'+text+"<\/span>";
....

Моё мнение : им в винду надо оперу или файрфокса засунуть и забыть про IE (мелкомягким). А также выплатить компенсацию всем JS-кодерам, скрипты которых стало возможно упростить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите настроить скрипт раскрывающегося меню melomanfm Работа 6 10.08.2009 01:21
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07