(async () => {
const rows = [...document.querySelectorAll('.rt-tr')];
const selectedRows = rows.filter(row => {
const checkbox = row.querySelector('input[type="checkbox"]');
return checkbox?.checked;
});
console.log(`Выбрано строк: ${selectedRows.length}`);
if (!selectedRows.length) {
alert('Нет выбранных строк.');
return;
}
const urls = [];
for (const row of selectedRows) {
const target = row.querySelector('span[aria-label]');
if (!target) {
console.warn('В строке не найден span с aria-label:', row);
continue;
}
const name = target.getAttribute('aria-label');
console.log('Обрабатываю:', name);
let capturedUrl = null;
const originalPushState = history.pushState;
const originalReplaceState = history.replaceState;
history.pushState = function (state, title, url) {
if (url) {
capturedUrl = new URL(url, location.href).href;
}
};
history.replaceState = function (state, title, url) {
if (url) {
capturedUrl = new URL(url, location.href).href;
}
};
try {
target.dispatchEvent(new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window,
ctrlKey: true,
metaKey: false,
button: 0
}));
} catch (e) {
console.error(e);
}
history.pushState = originalPushState;
history.replaceState = originalReplaceState;
if (capturedUrl) {
urls.push(capturedUrl);
console.log('URL:', capturedUrl);
} else {
console.warn('URL не удалось перехватить:', name);
}
await new Promise(r => setTimeout(r, 100));
}
console.log('Найдено URL:', urls);
if (!urls.length) {
alert('Не удалось получить URL. Смотри сообщения в Console.');
return;
}
urls.forEach((url, i) => {
setTimeout(() => {
window.open(url, '_blank');
}, i * 150);
});
console.log(`Открываю ${urls.length} вкладок.`);
})();