Command Palette

Search for a command to run...

iFrames

Verarbeite Aktivitätsdaten, die in eingebetteten Frames leben.

iFrame-Presence-Skripte werden optional unterstützt. Setze iframe auf true und gib iFrameRegExp in metadata.json an.

Eine iFrame-Presence konfigurieren

Füge das URL-Muster der verschachtelten Frames in metadata.json ein:

{
  "iframe": true,
  "iFrameRegExp": "player\\.example\\.com/embed/"
}

Erstelle neben presence.ts eine iframe.ts-Datei. Sie läuft in passenden verschachtelten Frames:

const iframe = new iFrame()

iframe.on("UpdateData", () => {
  const video = document.querySelector("video")
  if (!video) return

  iframe.send({
    video: {
      paused: video.paused,
      currentTime: video.currentTime,
      duration: video.duration,
      title: document.querySelector(".video-title")?.textContent,
    },
  })
})

Empfange die Daten in presence.ts:

presence.on("iFrameData", (data) => {
  iFrameData = data
})

iFrameData wird einmal pro Nachricht ausgelöst. Bei mehreren Frames musst du die Daten in der Haupt-Presence identifizieren oder zusammenführen. iFrameRegExp wird gegen die URL des verschachtelten Frames geprüft.

Empfohlener Ansatz

Verwende die iframe-Behandlung nur, wenn die Hauptseite nicht auf den benötigten Zustand zugreifen kann.

Bevorzuge stabile DOM-Selektoren, Mediaelemente und öffentlichen Seitenzustand, bevor du iframe-Logik hinzufügst.

Sicherheit

Vermeide das Sammeln persönlicher oder sensibler Daten aus Frames. Eine Presence sollte nur Aktivitätsinformationen senden, die für die Discord-Rich-Presence nützlich sind.