Command Palette

Search for a command to run...

iFrames

Obsługuj dane aktywności znajdujące się w osadzonych ramkach.

Skrypty obecności w iFrame są obsługiwane jako funkcja opcjonalna. Ustaw iframe na true i podaj iFrameRegExp w metadata.json.

Konfigurowanie obecności iFrame

Dodaj wzorzec URL zagnieżdżonych ramek do metadata.json:

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

Utwórz plik iframe.ts obok presence.ts. Będzie uruchamiany w pasujących zagnieżdżonych ramkach:

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,
    },
  })
})

Odbierz dane w presence.ts:

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

iFrameData jest emitowane raz dla każdej wiadomości. Przy wielu ramkach rozpoznaj lub scal ich dane w głównej obecności. iFrameRegExp jest porównywany z URL-em zagnieżdżonej ramki.

Zalecane podejście

Używaj obsługi iframe tylko wtedy, gdy strona główna nie ma dostępu do wymaganego stanu.

Preferuj stabilne selektory DOM, elementy multimediów i publiczny stan strony, zanim dodasz logikę iframe.

Bezpieczeństwo

Unikaj zbierania danych osobowych lub wrażliwych z ramek. Obecność powinna wysyłać tylko informacje o aktywności, które są przydatne dla Discord Rich Presence.