Три действия, заслуживающие места на панели: чистый URL, CSV, PIP
Панель действий JustZix даёт лучшее, когда содержит то, что ты используешь каждый день. Вот три универсальных действия — полезные почти везде, каким бы ни был сайт. Каждое — это кнопка и несколько строк кода.
Действие 1 — чистый URL
Ты копируешь ссылку для отправки, а за ней тянется хвост ?utm_source=...&fbclid=.... Это действие копирует адрес без трекинг-мусора. Метка URL, фиолетовая:
const url = new URL(location.href);
const junk = ['fbclid', 'gclid', 'msclkid', 'igshid', 'mc_eid'];
[...url.searchParams.keys()].forEach(k => {
if (k.startsWith('utm_') || junk.includes(k)) {
url.searchParams.delete(k);
}
});
navigator.clipboard.writeText(url.toString());
JUSTZIX.log('Чистый URL в буфере обмена: ' + url);
Действие 2 — экспорт таблицы в CSV
Страница показывает данные в таблице, но не даёт тебе никакого «скачать». Это действие выгружает первую таблицу в CSV-файл. Метка CSV, зелёная:
const t = document.querySelector('table');
if (!t) { alert('На странице нет таблицы.'); }
else {
const csv = [...t.rows].map(r =>
[...r.cells].map(c =>
'"' + c.innerText.trim().replace(/"/g, '""') + '"'
).join(',')
).join('\n');
const a = document.createElement('a');
a.href = URL.createObjectURL(new Blob([csv], { type: 'text/csv' }));
a.download = 'таблица.csv';
a.click();
}
Действие 3 — Picture-in-Picture
Заставляет видео страницы перепрыгнуть в плавающее окно, остающееся на переднем плане, когда ты меняешь вкладку. Метка PIP, синяя:
const v = document.querySelector('video');
if (!v) { alert('На странице нет видео.'); }
else if (document.pictureInPictureElement) {
document.exitPictureInPicture();
} else {
v.requestPictureInPicture();
}
Почему действия, а не правила
У всех трёх общая черта: ты хочешь активировать их в момент, который выбираешь сам, не автоматически. Это и есть определение действия — код, выполняемый кликом, не при каждой загрузке страницы. Правило, которое «копирует URL при каждом визите», не имело бы смысла; кнопка «копировать сейчас» — имеет.
Ловушки
- clipboard требует жеста.
navigator.clipboard.writeTextработает, потому что действие — это клик — браузер обращается с ним как с согласием пользователя. Тот же код в правиле (без клика) был бы заблокирован. - CSV берёт первую таблицу. Страница с несколькими таблицами? Сузь
querySelectorдо нужной. - PIP только для <video>. Плееры, рисующие изображение на
<canvas>, не войдут в Picture-in-Picture.
Смотри также
- Примеры — эти и другие готовые действия
- Действие КНОПКА — тип действия за этими тремя
- window.JZ helpers — программный API действий
Установи JustZix — и держи эти три кнопки под рукой везде.
Оцени эту статью
Оценок пока нет — оцени первым.