Доброе утро всем.
Я продолжаю улучшать парсер логов 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-архив)