← 全部文章

操作类型

复制为 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_*fbclidgclid 和类似的追踪参数。这个动作移除它们并复制干净的 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" 是良好实践——它阻止新页面获得一个指回你标签页的引用。

何时用动作、何时用规则

现成示例里浏览预制按钮,或者下载 JustZix 来设置它们。要换成自动的、加载时的微调,参见自定义键盘快捷键

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景