Skocz do zawartości

Statystyki, aktualnie grający prezenter

Rekomendowane odpowiedzi

Opublikowano

Cześć, jako że jest kod php, który działa tak samo, zauważyłem, że nie na wszystkich hostingach pobiera dane aktualnie grającego prezentera.

Napisałem więc kod w JS, który działa tak samo i według mnie pomija ten problem.


KOD w HTML:

Aktualnie gra: <span id="prezenter">Nazwa prezentera</span>

KOD JS, w pliku HTML przed </body>:

<script>

function loadPrezenter() {

fetch('https://api.allorigins.win/raw?url=' + encodeURIComponent('host:port/stats?sid=1'))

.then(response => response.text())

.then(data => {

const parser = new DOMParser();

const xml = parser.parseFromString(data, 'text/xml');

let prezenter = 'Imie';

const serverGenre = xml.querySelector('SERVERGENRE');

if (serverGenre && serverGenre.textContent.trim() !== '') {

prezenter = serverGenre.textContent.trim();

}

const element = document.getElementById('prezenter');

if (element) {

element.textContent = prezenter;

}

})

.catch(error => {

console.error('Błąd pobierania:', error);

const element = document.getElementById('prezenter');

if (element) {

element.textContent = 'Blad';

}

});

}

loadPrezenter();

setInterval(loadPrezenter, 30000); // aktualizacja co 30 sekund

</script>

Cały skrypt robi jedną rzecz: co 30 sekund pobiera aktualną nazwę prezentera z serwera radia i wstawia ją na stronę.

Edytowane przez Jarl

  • 3 tygodnie później...
SeoHost.pl
Opublikowano

Nie wiem jakiego hostingu używałeś, że nie wyświetlało Ci nazwy prezentera. Chyba,że darmowego typu CBA...

Używasz setInterval, który uruchamia funkcję co 30 sekund bez względu na to, czy poprzednie zapytanie się zakończyło. Jeśli serwer będzie działał wolno, zapytania mogą zacząć się "nakładać".

Użyj rekurencyjnego setTimeout wewnątrz bloku .finally().

Za każdym razem szukasz elementu document.getElementById('prezenter'). Jeśli ten skrypt działa na stronie przez długi czas, lepiej zapisać ten element w zmiennej poza funkcją.

Opublikowano
  • Autor

Miałem problem na hostingu "domenomania".

26 minut temu, Jarek napisał(a):

Używasz setInterval, który uruchamia funkcję co 30 sekund bez względu na to, czy poprzednie zapytanie się zakończyło. Jeśli serwer będzie działał wolno, zapytania mogą zacząć się "nakładać".

Użyj rekurencyjnego setTimeout wewnątrz bloku .finally().

Za każdym razem szukasz elementu document.getElementById('prezenter'). Jeśli ten skrypt działa na stronie przez długi czas, lepiej zapisać ten element w zmiennej poza funkcją.

Dziękuję ślicznie, cenna uwaga

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

Powiadomienie o plikach cookie

Strona korzysta z plików cookie. Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Polityka prywatności.

Account

Navigation

Szukaj

Szukaj

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.