Показать сообщение отдельно
  #1 (permalink)  
Старый 20.08.2011, 08:36
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Совместимость с IE7
Доброе утро всем.
Я продолжаю улучшать парсер логов SHOUTcast сервера. На этот раз я написал на JavaScript четыре функции, первые две из которых совсем примитивны (меняют ширину столбцов определённого класса в таблицах), а вторые две чуть похитрее. Вот исходный код:

function groupSucc() {
    var tables = document.getElementsByTagName('table')
    for (var i = 0; i < tables.length; i++) {
        var ip = ''
        var from = 0
        var merged = 1
        var rows = tables[i].rows
        for (var j = 1; j < rows.length; j++) {
            if (rows[j].cells[0].innerHTML != ip) {
                ip = rows[j].cells[0].innerHTML
                from += merged
                merged = 1
            } else {
                merged++
                rows[from].cells[0].setAttribute('rowspan', merged)
                rows[from].cells[4].setAttribute('rowspan', merged)
                rows[j].deleteCell(0)
                rows[j].deleteCell(3)
            }
        }
    }
}

function ungroupSucc() {
    var tables = document.getElementsByTagName('table')
    for (var i = 0; i < tables.length; i++) {
        var from = 0
        var merged = 1
        var rows = tables[i].rows
        for (var j = 1; j < rows.length; j++) {
            if (merged > 1) {
                rows[j].insertCell(0)
                rows[j].insertCell(-1)
                rows[j].cells[0].innerHTML = rows[from].cells[0].innerHTML
                rows[j].cells[4].innerHTML = rows[from].cells[4].innerHTML
                rows[j].cells[4].setAttribute('align', 'right')
                merged--
                if (merged == 1) {
                    rows[from].cells[0].removeAttribute('rowspan')
                    rows[from].cells[4].removeAttribute('rowspan')
                }
                continue;
            }
            if (rows[j].cells[0].hasAttribute('rowspan')) {
                from = j
                merged = parseInt(rows[j].cells[0].getAttribute('rowspan'))
            }
        }
    }


При этом в Firefox и Opera всё работает на ура. Проблема в том, что в IE7, в отличие от Восьмого, не встроено нормальных средств отладки, и я, честно говоря, не понимаю, что он мне хочет сказать. Все использованные мной методы поддерживаются стандартами W3C, смотрел в сети. Он что, не соблюдает эти стандарты? Можно ли как-то "обхитрить" его?

Вот ссылка на парсер: http://popov654.pp.ru/parser3

Лог-файл для анализа в аттаче (ZIP-архив)
Вложения:
Тип файла: zip sc_serv.zip (624.7 Кб, 3 просмотров)
Ответить с цитированием