Пользовательский скрипт: click по элементам на чужом angular сайте
Страница полностью загружена, на ней есть таблица.
В таблице собрана информация за год и по месяцам. Вначале она отображает информацию только за год, одной строкой. По нажатию на ссылку в последнем столбце, она раскрывается, и отображается информация по месяцам. На рис. часть кода страницы. https://hostingkartinok.com/show-ima...a88375fb49a592 Пытаюсь программно раскрыть таблицу. Выполняю свой скрипт через букмарклет, а сам файл скрипта лежит на локальном веб сервере.
let table = document.getElementsByClassName("table-cust table-cust-payment");
let col=table[1].children;
let ref=col[4].children;
let event = new MouseEvent("click");
console.log(ref[0].dispatchEvent(event));
Результат true, но таблица не раскрывается. Подскажите, возможно ли программно раскрыть эту таблицу, так как строк может быть очень много? И как лучше это сделать? |
Вы запутались в "детях",
1. нет rows 2. если смотреть на картину, то порядок другой
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div class="table-cust table-cust-payment">
<div class="table-row"></div>
<div class="table-row">
<div class="table-col"></div>
<div class="table-col"></div>
<div class="table-col">
<a href="">
<span>vvvv</span>
</a>
</div class="table-col">
</div>
<div class="table-row"></div>
</div>
</body>
<script>
const table = document.getElementsByClassName("table-cust table-cust-payment")
const rows=table[0].querySelectorAll('div.table-row');
console.log(rows);
const cols=rows[1].querySelectorAll('div.table-col');
console.log(cols);
const ref=cols[2].querySelector('a');
console.log(ref);
const event = new MouseEvent("click");
setTimeout (()=>{
ref.dispatchEvent(event);
}, 4000);
</script>
</html>
Цитата:
Но лучше посмотриеть F12-Network, где видно запросы страницы и самостоятельно их сделать |
Уточняю.
1. Мой скрипт правильный, так как getElementsByClassName возвращает детей/строки. Сбил с толку фразой table. 2. Клик происходит, но вместо раскрытия таблицы, я перехожу по ссылке: "корень сайта" и плюс "#". Как раз та "решетка" которая находится в теге <a>. Может на чужом angular сайте у меня не получится программно раскрыть таблицу? Подскажите... |
Ну да. В обработчике клика должен вызываться preventDefault().
Без него будет переход по ссылки. |
| Часовой пояс GMT +3, время: 07:33. |