Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2009, 05:52
Новичок на форуме
Отправить личное сообщение для smart1k Посмотреть профиль Найти все сообщения от smart1k
 
Регистрация: 06.06.2009
Сообщений: 4

Подвисания в IE6
В общем есть WP плагин Collapsing Categories который использует javascript, чтобы разворачивать список категорий. Проблема заключается в том, что в FF, Opera, IE7 все работает отлично, а в IE6 сайт подвисает где-то на минуту и затем дико тормозит при просмотре страниц (загрузка процессора 80%). IE6 выдает ошибку: "1" - есть null или не является объектом. Разработчик мне не ответил. Может кто-нибудь сталкивался с подобной проблеммой? Что нужно подправить или может существует какой-либо хак? Спасибо.
String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g,"");
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  } else {
    var expires = "";
  }
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') {
      c = c.substring(1,c.length);
    }
    if (c.indexOf(nameEQ) == 0) {
      return c.substring(nameEQ.length,c.length);
    }
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
function autoExpandCollapse(collapsClass) {
  var cookies = document.cookie.split(';');
  var cookiePattern = new RegExp(collapsClass+'(-[0-9]+|List-[0-9]+-[0-9]+)');
  var classPattern = new RegExp('^' + collapsClass);
  var hide = collapsClass + ' ' + 'hide'
  var show = collapsClass + ' ' + 'show'
  for (var cookieIndex=0; cookieIndex<cookies.length; cookieIndex++) {
    var cookieparts= cookies[cookieIndex].split('=');
    var cookiename=cookieparts[0].trim();
    var cookievalue=cookieparts[1].trim();
    if (cookiename.match(cookiePattern)) {
      var expand= document.getElementById(cookiename);
      if (expand) {
        var thisli = expand.parentNode;
        for (var childI=0; childI< thisli.childNodes.length; childI++) {
          if (thisli.childNodes[childI].nodeName.toLowerCase() == 'span') {
            theSpan=thisli.childNodes[childI];
            if (theSpan.className.match(classPattern)) {
              if ((theSpan.className == show && cookievalue ==1) ||
                  (theSpan.className == hide && cookievalue ==0)) {
                var theOnclick=theSpan.onclick+"";
                var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
                var expand=matches[1].replace(/\\u25BA/, '\u25BA');
                var collapse=matches[2].replace(/\\u25BC/, '\u25BC');
                collapse=collapse.replace(/\\u2014/, '\u2014');
                expandCollapse(theSpan,expand,collapse,0,collapsClass);
              }
            }
          }
        } 
      }
    }
  }
}

function expandCollapse( e, expand,collapse, animate, collapsClass ) {
  var classPattern= new RegExp('^' + collapsClass);
  if (expand=='expandImg') {
    expand=expandSym;
  }
  if (collapse=='collapseImg') {
    collapse=collapseSym;
  }
  if( e.target ) {
    src = e.target;
  } else if (e.className && e.className.match(classPattern)) {
    src=e;
  } else {
    try {
      src = window.event.srcElement;
    } catch (err) {
    }
  }

  if (src.nodeName.toLowerCase() == 'img') {
    src=src.parentNode;
  }
  srcList = src.parentNode;
  if (srcList.nodeName.toLowerCase() == 'span') {
    srcList= srcList.parentNode;
    src= src.parentNode;
  }
  childList = null;

  for( i = 0; i < srcList.childNodes.length; i++ ) {
    if( srcList.childNodes[i].nodeName.toLowerCase() == 'ul' ) {
      childList = srcList.childNodes[i];
    }
  }
  var hide = collapsClass + ' ' + 'hide'
  var show = collapsClass + ' ' + 'show'
  if( src.getAttribute( 'class' ) == hide ) {
    var theSpan = src.childNodes[0];
    var theId= childList.getAttribute('id');
    createCookie(theId,0,7);
    src.setAttribute('class',show);
    src.setAttribute('title','click to expand');
    theSpan.innerHTML=expand;
    if (animate==1) {
      Effect.BlindUp(childList, {duration: 0.5});
    } else {
      childList.style.display = 'none';
    }
  } else {
    var theSpan = src.childNodes[0];
    var theId= childList.getAttribute('id');
    createCookie(theId,1,7);
    src.setAttribute('class',hide);
    src.setAttribute('title','click to collapse');
    theSpan.innerHTML=collapse;
    if (animate==1) {
      Effect.BlindDown(childList, {duration: 0.5});
    } else {
      childList.style.display = 'block';
    }
  }

  if( e.preventDefault ) {
    e.preventDefault();
  }

  return false;
}
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2009, 17:11
Аватар для Snowcore
Аспирант
Отправить личное сообщение для Snowcore Посмотреть профиль Найти все сообщения от Snowcore
 
Регистрация: 02.06.2009
Сообщений: 92

а какая у вас версия плагина?

Последний раз редактировалось Snowcore, 26.10.2009 в 17:44.
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2009, 16:19
Новичок на форуме
Отправить личное сообщение для smart1k Посмотреть профиль Найти все сообщения от smart1k
 
Регистрация: 06.06.2009
Сообщений: 4

Вопрос решил. Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2009, 05:44
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

smart1k, что же не поделились ответом?
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2009, 21:03
Новичок на форуме
Отправить личное сообщение для smart1k Посмотреть профиль Найти все сообщения от smart1k
 
Регистрация: 06.06.2009
Сообщений: 4

К счастью для меня, причина крылась в дополнительном CSS темы для IE6, что странно. Убрал ie6 CSS - сайт стал "летать".
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2009, 23:43
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

может он был expressionfull
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2009, 17:55
Новичок на форуме
Отправить личное сообщение для smart1k Посмотреть профиль Найти все сообщения от smart1k
 
Регистрация: 06.06.2009
Сообщений: 4

Не то слово. Не .css, а .js какой-то. Хотя в итоге все отображается не так, как в "нормальных" браузерах, все-таки читабельно и не подвисает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти overflow-x в IE6 AlexMak (X)HTML/CSS 2 26.11.2010 14:52
IE6 и определение размеров ВСЕГО документа jestalnar Общие вопросы Javascript 1 02.02.2009 11:05
Прозрачное меню в ie6 mrsoul Элементы интерфейса 5 05.01.2009 14:44
IE6 + location.href Snipe Internet Explorer 4 12.11.2008 15:58
Как убрать фокус с селекта в IE6? Shurik_ Общие вопросы Javascript 2 05.11.2008 17:14