三个值得在栏里占一个位置的动作:干净 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 = 'table.csv';
a.click();
}
动作 3 —— 画中画
把页面的视频弹进一个悬浮窗口,切换标签页时它保持在最前面。标签 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>上的播放器不会进入画中画。
另见
- 示例 —— 这些和其他开箱即用的动作
- BUTTON 动作 —— 这三个背后的动作类型
- window.JZ 辅助函数 —— 动作的程序化 API
安装 JustZix —— 把这三个按钮放在处处触手可及之处。
为这篇文章评分
暂无评分 — 成为第一个。