Jamdesk Documentation logo

Seite einbetten

Öffnen Sie das Jamdesk-Changelog in Ihrer App per Schaltfläche in einem Modal, inklusive Ungelesen-Punkt – mit nur einem Skript-Tag und ohne Build-Schritt.

Fügen Sie einen „Was gibt’s Neues?“-Auslöser in Ihr Produkt ein. Eine Schaltfläche oder ein schwebender Launcher öffnet die Changelog-Einträge Ihrer Dokumentation in einem Modal. Ein Punkt kennzeichnet ungelesene Updates pro Besucher. Fügen Sie ein <script>-Tag ein. Jamdesk hostet und versioniert das Widget.

Die Anzeige des Ungelesen-Punkts ist auf das Changelog ausgelegt. Das Widget kann jedoch jede Dokumentationsseite im Modal öffnen. Weitere Informationen finden Sie unter Modal auf beliebige Seite ausrichten.

Die Screenshots zeigen die Benutzeroberfläche auf Englisch.

Das Modal „Was gibt’s Neues?“ ist über einer abgedunkelten App geöffnet und zeigt die Jamdesk-Changelog-Seite mit einer Schaltfläche zum Kopieren der Seite, datierten Update-Einträgen und einer Schließen-Schaltfläche in der oberen Ecke

Live ausprobieren

Auf dieser Seite läuft das echte Widget. Klicken Sie auf die Schaltfläche, um das Modal zu öffnen, das Ihre Besucher sehen – mit dem Changelog dieser Website:

Diese Schaltfläche ist die MDX-Komponente <Widget>. Verwenden Sie sie, um das Widget in einer Jamdesk-Dokumentationsseite einzubetten. Dafür genügt ein Tag, ein Skript ist nicht erforderlich, und die Komponente findet Ihre Website automatisch. Verwenden Sie den <script>-Ausschnitt weiter unten, um das Widget in Ihr eigenes Produkt oder Ihre eigene App einzubetten, wo MDX-Komponenten nicht ausgeführt werden. Widget und Modal sind identisch. Der Rest dieser Seite behandelt das Skript.

Voraussetzungen

  • Eine veröffentlichte Jamdesk-Website auf ihrer *.jamdesk.app-Subdomain. Das Widget wird immer von dort geladen, selbst wenn Sie Ihre Dokumentation zusätzlich unter einer benutzerdefinierten Domain bereitstellen.
  • Eine Changelog-Seite, die aus <Update>-Einträgen mit rss: true im Frontmatter erstellt wurde (siehe Mit rss: true aktivieren).

Schnellstart

Öffnen Sie Ihr Dashboard und gehen Sie zu Integrations → What's New widget. Legen Sie die Seiten- und Launcher-Optionen fest. Kopieren Sie den generierten Ausschnitt. Er sieht so aus:

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  data-theme="auto"
  async
></script>

Fügen Sie ihn vor dem schließenden </body>-Tag in den HTML-Code Ihrer App ein. Dadurch wird in einer Ecke ein schwebender What's new-Launcher eingeblendet. Er öffnet Ihr Changelog in einem Modal. Ein Ungelesen-Punkt erscheint, wenn es einen Eintrag gibt, den der Besucher noch nicht gesehen hat.

Ersetzen Sie acme durch Ihre eigene Subdomain. Die Dashboard-Karte trägt diesen Wert ein. Sie setzt data-base auf den richtigen Ursprung, einschließlich des /docs-Pfads, wenn Sie die Dokumentation unter einem Unterpfad hosten.

Eine Version festlegen oder selbst hosten

Das Widget ist Open Source. Der oben gezeigte gehostete Ausschnitt liefert immer die neueste Version. Das Repository jamdesk-widget bietet zwei weitere Möglichkeiten zum Laden: eine bekannte Version fixieren oder die Datei selbst bereitstellen.

Eine Version mit jsDelivr fixieren. Laden Sie ein getaggtes Release vom CDN. Die Bytes ändern sich nicht:

<script
  src="https://cdn.jsdelivr.net/gh/jamdesk/jamdesk-widget@v1.0.0/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  async
></script>

Selbst hosten. Laden Sie widget.js aus dem neuesten Release herunter und stellen Sie die Datei von Ihrem eigenen Ursprung bereit. Verwenden Sie diese Methode, wenn eine strenge script-src-Richtlinie Skripte von Drittanbietern ausschließt.

Setzen Sie data-base für eine fixierte oder selbst gehostete Datei auf Ihren *.jamdesk.app-Ursprung. Der gehostete Ausschnitt liest den Wert aus der URL des Skripts. Ein CDN oder Ihr eigener Server kann das nicht. Zu jedem Release wird ein Subresource-Integrity-Hash veröffentlicht, mit dem sich die exakten Bytes fixieren lassen. Die README des Repositorys beschreibt die drei Installationswege.

Mit rss: true aktivieren

Das Widget liest den neuesten Eintrag aus Ihrem RSS-Feed. Eine Seite speist das Widget nur dann, wenn in ihrem Frontmatter rss: true festgelegt ist:

---
title: Changelog
rss: true
---

<Update label="June 2026" date="2026-06-01">

**Spec validation at build time.** Every deploy validates the OpenAPI specs your `docs.json` references.

</Update>

Ohne rss: true wird das Widget zwar geladen, zeigt aber keine Einträge an. Der Launcher bleibt ausgeblendet. Eine Dokumentationsseite, die die <Update>-Komponente nur demonstriert (ohne rss: true), wird nicht berücksichtigt. Ein Demodatum lässt den Punkt nicht aufleuchten.

Jedes <Update>, das in den Widget-Feed eingeht, benötigt ein date (einen Wert, den Date.parse lesen kann, etwa 2026-06-01). rss: true auf der Seite reicht nicht aus. Das Datum sortiert den Feed und kennzeichnet den neuesten Eintrag. Das Widget überspringt Einträge ohne Datum. Gibt es keine datierten Einträge, bleibt der schwebende Launcher ausgeblendet und der Ungelesen-Punkt erscheint nie – auch wenn rss: true gesetzt ist.

Das Snippet konfigurieren

Jede Option wird als data--Attribut im Script-Tag angegeben. Die Dashboard-Karte trägt diese Werte ein. Sie können den Ausschnitt auch manuell bearbeiten.

AttributWerteStandardZweck
data-baseURL Ihrer WebsiteSkriptursprungDer *.jamdesk.app-Ursprung (plus /docs, wenn Sie die Dokumentation unter einem Unterpfad hosten).
data-pagePfad/changelogJeder Dokumentationspfad, der im Modal geöffnet werden soll – nicht nur das Changelog. Siehe Modal auf beliebige Seite ausrichten.
data-themeauto, light, darkautoLegt das Farbschema des Modals fest oder übernimmt die Systemeinstellung des Besuchers.
data-positionbottom-right, bottom-left, top-right, top-leftbottom-rightLegt fest, in welcher Ecke der schwebende Launcher erscheint. Wird ignoriert, wenn data-trigger gesetzt ist.
data-labelTextWhat's newDer Schaltflächentext des schwebenden Launchers.
data-widthCSS-Längenangabe560pxBreite des Modals. Siehe Modalgröße anpassen.
data-heightCSS-Längenangabe680pxHöhe des Modals.
data-radiusCSS-Längenangabe12pxEckenradius des Modals. Verringern Sie den Wert für eckigere Ecken.
data-unreadoff zum DeaktivierenanLegt fest, ob der Ungelesen-Punkt angezeigt wird.
data-unread-colorHexadezimalwert oder CSS-Farbname#e5484dFarbe des Ungelesen-Punkts.
data-button-colorHexadezimalwert oder CSS-Farbname#111Hintergrund des schwebenden Launchers. Wird ignoriert, wenn data-trigger gesetzt ist.
data-button-text-colorHexadezimalwert oder CSS-Farbname#fffTextfarbe des schwebenden Launchers.
data-triggerCSS-Selektor(none)Verknüpft das Widget mit einem eigenen Element statt mit dem schwebenden Launcher.
data-projectSlugabgeleitet aus data-baseSchlüssel, unter dem der „gesehen“-Status pro Besucher gespeichert wird. Nur überschreiben, wenn ein Ursprung mehr als ein Changelog bereitstellt.

Das Modal auf eine beliebige Seite richten

Mit data-page lässt sich jeder Pfad Ihrer Dokumentationswebsite öffnen, nicht nur /changelog. Das Modal zeigt die angegebene Seite ohne Website-Rahmen an. Verwenden Sie diese Option für eine Ankündigung oder einen Migrationshinweis:

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/announcements/2026-migration"
  data-unread="off"
  async
></script>

Zwei Verhaltensweisen bleiben an Ihren Changelog-Feed gebunden:

  • Der Ungelesen-Punkt verfolgt den neuesten Eintrag Ihres Changelogs, nicht die Seite im Modal. Setzen Sie data-unread="off", wenn das Modal eine andere Seite öffnet. Andernfalls leuchtet der Punkt bei Changelog-Updates auf, die Besucher dort nicht sehen.
  • Der schwebende Launcher erscheint nur, wenn Ihr Changelog einen Eintrag enthält (siehe Mit rss: true aktivieren). Wenn Ihre Website kein Changelog hat, verknüpfen Sie das Widget über data-trigger mit einem eigenen Element. Ihr Element wird immer angezeigt.

Launchermodi

Schwebender Launcher

Lassen Sie data-trigger weg. Das Widget erstellt eine eigene Schaltfläche in der mit data-position angegebenen Ecke und verwendet den Text aus data-label.

Mit eigenem Element verknüpfen

Setzen Sie data-trigger="#whats-new" (beliebiger CSS-Selektor). Das Widget wird über Ihren vorhandenen Navigationslink oder Ihre Schaltfläche geöffnet.

Ein verknüpftes Element erhält den Ungelesen-Punkt. Das Widget erstellt keine schwebende Schaltfläche; data-position und data-label haben dann keine Wirkung:

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  data-trigger="#whats-new"
  async
></script>

Modalgröße festlegen

Das Modal wird mit einer Größe von 560 × 680 px geöffnet. Ändern Sie sie mit data-width und data-height. Eine reine Zahl wird als Pixelwert interpretiert. Zulässig sind auch Werte mit px, vw, vh, rem, em oder %:

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  data-width="720px"
  data-height="600px"
  async
></script>

Das Modal ist auf eine Breite von 92vw und eine Höhe von 86vh begrenzt. Auch eine große Größe passt auf ein Smartphone. Ein nicht erkannter Wert wird durch den Standardwert ersetzt. Der standardmäßige Eckenradius beträgt 12 px. Mit data-radius können Sie die Ecken eckiger oder runder gestalten (beliebige CSS-Längenangabe).

Die Launcher-Schaltfläche gestalten

Der schwebende Launcher ist standardmäßig eine dunkle Pillen-Schaltfläche. Ändern Sie ihre Farbe mit data-button-color (Hintergrund) und data-button-text-color (Text). Verwenden Sie einen Hexadezimalwert oder einen CSS-Farbnamen:

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  data-button-color="#4f46e5"
  data-button-text-color="#ffffff"
  async
></script>

Diese beiden Attribute gestalten nur die eigene schwebende Schaltfläche des Widgets. Auf ein über data-trigger verknüpftes Element haben sie keine Wirkung. Dieses Element behält seine eigene Gestaltung.

Den Unread-Punkt anpassen

Der Ungelesen-Punkt ist rot (#e5484d) und standardmäßig aktiviert. Ändern Sie seine Farbe mit data-unread-color (einem Hexadezimalwert oder CSS-Farbnamen). Deaktivieren Sie ihn mit data-unread="off":

<!-- Recolor the dot -->
<script src="https://acme.jamdesk.app/_jd/widget.js" data-base="https://acme.jamdesk.app" data-unread-color="#7c3aed" async></script>

<!-- Turn the dot off -->
<script src="https://acme.jamdesk.app/_jd/widget.js" data-base="https://acme.jamdesk.app" data-unread="off" async></script>

Wenn Sie den Punkt deaktivieren, bleiben Launcher und Modal erhalten. Nur die Markierung wird entfernt.

Der Unread-Punkt

Das Widget vergleicht die ID des neuesten Eintrags mit einem Wert im localStorage des Browsers (ein Schlüssel pro Projekt). Weichen die Werte voneinander ab, erscheint ein Punkt am Launcher. Beim Öffnen des Modals wird der Eintrag als gesehen markiert. Der Punkt bleibt ausgeblendet, bis das nächste Update veröffentlicht wird.

Der Status wird in localStorage gespeichert – pro Browser und Besucher. Es gibt weder ein Konto noch Tracking. Beim Löschen der Websitedaten wird der Status zurückgesetzt. Besucher sehen den Punkt einmal, wenn sie einen neuen Browser verwenden. Er erscheint wieder, sobald Sie etwas Neues veröffentlichen.

Beispiele

<script
  src="https://acme.jamdesk.app/_jd/widget.js"
  data-base="https://acme.jamdesk.app"
  data-page="/changelog"
  data-position="bottom-left"
  data-unread-color="#22c55e"
  async
></script>

Content-Security-Policy

Wenn Ihre Website eine strenge Content-Security-Policy sendet, erlauben Sie Ihren *.jamdesk.app-Ursprung in drei Direktiven. Andernfalls bleibt das Widget ohne sichtbare Wirkung:

Content-Security-Policy:
  script-src  https://acme.jamdesk.app;
  frame-src   https://acme.jamdesk.app;
  connect-src https://acme.jamdesk.app;
  • script-src lädt widget.js.
  • frame-src rendert das iframe des Modals.
  • connect-src ruft die Changelog-Metadaten für den Ungelesen-Punkt ab.

Bei einer fehlenden Direktive wird kein Fehlerbanner angezeigt. Der Launcher erscheint nicht oder das Modal bleibt leer. Wenn das Widget nicht angezeigt wird, überprüfen Sie die Browserkonsole auf CSP-Verstöße.

Passwortgeschützte Websites

Binden Sie das Widget nicht ein, wenn Ihre Dokumentationswebsite passwortgeschützt ist. Der Entsperrbildschirm gehört auf Ihre *.jamdesk.app-Website, nicht in ein iframe eines Drittanbieters. Beim Einbetten würden Besucher dazu aufgefordert, Ihr Website-Passwort in einem Frame eines anderen Ursprungs einzugeben. Das sieht wie eine Phishing-Aufforderung aus. Verwenden Sie das Widget nur für öffentliche Changelogs.

Wie geht es weiter?

Update-Komponente

Verfassen Sie die Changelog-Einträge, die das Widget ausliest

Benutzerdefinierte Domains

Stellen Sie Ihre Dokumentation unter Ihrer eigenen Domain bereit (das Widget wird weiterhin von jamdesk.app geladen)

Widget-Quellcode

Fixieren Sie eine Version, hosten Sie das Widget selbst oder lesen Sie den Quellcode auf GitHub