Загрузка данных
(() => {
if (window.__ozonSvgFilter) {
window.__ozonSvgFilter.stop();
}
const TARGET = 'http://www.w3.org/2000/svg';
let queue = [];
let processed = 0;
function processRows(rows) {
let kept = 0;
let removed = 0;
rows.forEach((row, index) => {
const cells = row.querySelectorAll(':scope > td');
if (cells.length < 7) {
console.log(
`[SVG FILTER] Строка: меньше 7 столбцов → пропуск`
);
return;
}
// 7-й столбец
const seventhCell = cells[6];
// Ищем SVG именно в 7-м столбце
const hasSvg = seventhCell.querySelector(
`svg[xmlns="${TARGET}"]`
);
if (hasSvg) {
kept++;
console.log(
`%c[SVG FILTER] SVG найден в 7-м столбце → ОСТАВЛЯЕМ`,
'color: lime'
);
} else {
removed++;
console.log(
`%c[SVG FILTER] SVG НЕ найден в 7-м столбце → УДАЛЯЕМ`,
'color: red'
);
row.remove();
}
});
processed += rows.length;
console.log(
`%c[SVG FILTER] Пачка обработана: ${rows.length} строк | ` +
`оставлено: ${kept} | удалено: ${removed} | ` +
`всего обработано: ${processed}`,
'color: cyan'
);
}
function tryProcess() {
// Обрабатываем только пачками по 50
while (queue.length >= 50) {
const batch = queue.splice(0, 50);
console.log(
`%c[SVG FILTER] Набралось 50 новых строк → начинаю проверку`,
'color: yellow'
);
processRows(batch);
}
}
// Следим за появлением новых строк
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType !== Node.ELEMENT_NODE) return;
// Если добавили сам <tr>
if (node.matches && node.matches('tr')) {
queue.push(node);
}
// Если <tr> находится внутри добавленного элемента
if (node.querySelectorAll) {
node.querySelectorAll('tr').forEach(row => {
queue.push(row);
});
}
});
});
tryProcess();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// Добавляем уже существующие строки в очередь
document.querySelectorAll('tr').forEach(row => {
queue.push(row);
});
// Проверяем, если уже есть 50 строк
tryProcess();
window.__ozonSvgFilter = {
stop() {
observer.disconnect();
queue = [];
delete window.__ozonSvgFilter;
console.log(
'%c[SVG FILTER] ОСТАНОВЛЕН',
'color: orange'
);
}
};
console.log(
'%c[SVG FILTER] ЗАПУЩЕН',
'color: cyan'
);
console.log(
'[SVG FILTER] Проверка происходит каждые 50 новых строк.'
);
console.log(
'[SVG FILTER] Остановка: __ozonSvgFilter.stop()'
);
})();