复制为 Markdown 和清理 URL 的工具栏按钮
JustZix JS 规则在页面加载时自动运行。动作不同——它们是工具栏按钮,其代码只在你点击时运行。这让动作非常适合按需工具:把当前页面复制为 Markdown、清掉 URL 里的追踪垃圾,或重写链接。下面是三个你每天都会用到的。
动作 1:把页面标题和 URL 复制为 Markdown
当你为笔记或文档收集链接时,你想要的是一个整洁的 Markdown 链接,而非一个原始 URL。这个动作构建一个并把它复制到剪贴板。
var title = (document.title || location.hostname).trim();
var url = location.href;
var markdown = '[' + title + '](' + url + ')';
navigator.clipboard.writeText(markdown).then(function () {
console.log('Copied: ' + markdown);
}).catch(function () {
console.log('Clipboard blocked — copy manually: ' + markdown);
});
因为动作在点击时运行,浏览器把剪贴板写入当作一次用户手势,所以 navigator.clipboard.writeText 被允许。一条在页面加载时运行的 JS 规则无法可靠地做到这一点。
动作 2:把选中的文本复制为 Markdown
选中一个标题和一些文本,点击按钮,得到返回的 Markdown。这个版本会检测选区是否位于一个标题元素里。
var sel = window.getSelection();
var text = sel ? sel.toString().trim() : '';
if (!text) {
console.log('Select some text first.');
} else {
var node = sel.anchorNode;
var el = node && node.nodeType === 3 ? node.parentElement : node;
var tag = el ? (el.tagName || '').toLowerCase() : '';
var prefix = '';
if (tag === 'h1') prefix = '# ';
else if (tag === 'h2') prefix = '## ';
else if (tag === 'h3') prefix = '### ';
navigator.clipboard.writeText(prefix + text);
console.log('Copied as markdown.');
}
动作 3:从 URL 剥离追踪参数
分享出去的链接常常塞满 utm_*、fbclid、gclid 和类似的追踪参数。这个动作移除它们并复制干净的 URL——无需重新加载页面。
var JUNK = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content',
'fbclid','gclid','mc_eid','ref','ref_src','igshid','_hsenc'];
var u = new URL(location.href);
JUNK.forEach(function (param) {
u.searchParams.delete(param);
});
var clean = u.toString();
navigator.clipboard.writeText(clean);
console.log('Clean URL copied: ' + clean);
如果你还想让地址栏更新,就加上 history.replaceState(null, '', clean);——它静默地重写 URL,不发额外请求。
额外:在新标签页中打开所有外部链接
这一个更适合作为 JS 规则(在加载时运行)而非动作,但它与上面的工具自然搭配。它找到指向其他域名的链接,并把它们标记为安全地在新标签页打开。
var here = location.hostname;
var links = document.querySelectorAll('a[href^="http"]');
links.forEach(function (a) {
try {
if (new URL(a.href).hostname !== here) {
a.target = '_blank';
a.rel = 'noopener noreferrer';
}
} catch (e) { /* 跳过格式错误的 href */ }
});
设置 rel="noopener noreferrer" 是良好实践——它阻止新页面获得一个指回你标签页的引用。
何时用动作、何时用规则
- 对任何你手动触发的东西使用动作:复制、导出、清理当前 URL。点击算作一次用户手势,这会解锁剪贴板访问。
- 对任何应该总是发生的东西使用 JS 规则:重写链接、解除复制封锁、关掉横幅。
- 动作在 JustZix 工具栏里显示为按钮,所以给它们清晰命名——"Copy as MD"、"Clean URL"。
- 这里的每段代码都是本地的:它读取页面并写入剪贴板,仅此而已。
在现成示例里浏览预制按钮,或者下载 JustZix 来设置它们。要换成自动的、加载时的微调,参见自定义键盘快捷键。
为这篇文章评分
暂无评分 — 成为第一个。