← Alle Beispiele

JavaScript Produktivität substack.com

Substack: schnelle Suche im Beitrag

Strg+Shift+F öffnet eine Suche, die jeden Treffer im Beitragstext markiert.

Code zum Kopieren

// Quick in-post search: press Ctrl+Shift+F to highlight matches in the article
(function () {
  function findRoot() {
    return document.querySelector('.body.markup, .available-content, [class*="postBody"]') || document.body;
  }
  function clearMarks(root) {
    root.querySelectorAll('mark[data-jz-search]').forEach(function (m) {
      var p = m.parentNode; p.replaceChild(document.createTextNode(m.textContent), m); p.normalize();
    });
  }
  function mark(root, q) {
    if (!q) { return 0; }
    var rx = new RegExp(q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
    var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);
    var nodes = [], n; while ((n = walker.nextNode())) { if (rx.test(n.nodeValue)) { nodes.push(n); } }
    var count = 0;
    nodes.forEach(function (node) {
      var span = document.createElement('span');
      span.innerHTML = node.nodeValue.replace(rx, function (m) { count++; return '<mark data-jz-search style="background:#fde68a;color:#111;">' + m + '</mark>'; });
      node.parentNode.replaceChild(span, node);
    });
    return count;
  }
  document.addEventListener('keydown', function (e) {
    if (!(e.ctrlKey && e.shiftKey && (e.key === 'F' || e.key === 'f'))) { return; }
    e.preventDefault();
    var root = findRoot(); clearMarks(root);
    var q = prompt('Search inside post:'); if (q == null || q === '') { return; }
    var n = mark(root, q);
    alert(n + ' match(es) for "' + q + '"');
    var first = root.querySelector('mark[data-jz-search]');
    if (first) { first.scrollIntoView({ behavior: 'smooth', block: 'center' }); }
  });
})();

So verwendest du dieses Beispiel

  1. Kopiere den Code mit der Schaltfläche oben.
  2. Installiere JustZix (2 Minuten) und öffne die Erweiterung auf der Zielseite.
  3. Füge eine neue Regel hinzu, die zu dieser Seite passt.
  4. Füge den Code in das JavaScript-Panel der Regel ein und speichere — er läuft bei jedem Seitenbesuch.

Bewerte dieses Beispiel

Noch keine Bewertungen — sei der Erste.

Funktioniert dieses Beispiel?

Snippets sind nutzlos, wenn du sie nirgendwo einfügen kannst.

JustZix ist in 2 Minuten installiert und führt deinen Code auf jeder passenden Seite aus. Kein Konto, keine Zahlung.

Kostenlos herunterladen Anwendungsfälle ansehen