Inhaltsverzeichnis
Genau wie bei allen Inhaltstypen im Portal werden Apps während der Wiedergabe vorab geladen. Das bedeutet, dass es mehrere Sekunden (oder sogar Minuten) dauern kann, bis die Widget-Instanz im Player’s Web Viewer geladen und tatsächlich im Bildschirm angezeigt wird.
Dies hat zwei Auswirkungen:
- Wenn Ihr Widget nicht statisch ist (z. B. wenn Sie eine Bilderliste anzeigen), müssen Sie wissen, wann Ihr Widget angezeigt wird, um Ihre Sequenz starten zu können.
- Wenn Ihr Widget ressourcenintensiv ist, verschwenden Sie Player-Ressourcen, was zu einer schlechten Wiedergabe führen kann.
Im Fall der „Simple Clock“ gilt das nicht; sagen wir, Sie möchten die Uhr starten, sobald das Widget angezeigt wird, und die Uhr stoppen, sobald das Widget ausgeblendet wird.
Ändern Sie den Widget-Code wie folgt:
index.html
<!DOCTYPE html>
<html>
<head>
<script>
var use_seconds = true;
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = 0
m = checkTime(m);
txtEl = document.getElementById('txt')
if (use_seconds) {
s = today.getSeconds();
s = checkTime(s);
txtEl.innerHTML = h + ":" + m + ":" + s;
}
else {
txtEl.innerHTML = h + ":" + m;
}
window.t = setTimeout(startTime, 500);
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
function init_widget(config) {
if (!config) {
return;
}
if("clock_font_size" in config){
var pixels = config.clock_font_size + "px"
document.getElementById('txt').style.fontSize = pixels;
}
if("use_seconds" in config){
use_seconds = config.use_seconds;
}
}
function start_widget(){
startTime()
}
function stop_widget(){
if(window.t){
clearTimeout(window.t);
}
}
</script>
</head>
<body>
<div id="txt" style="font-size: 48px"></div>
</body>
</html>
Modifikationen erläutert
Wie Sie sehen, starten wir die Uhr nun nicht beim Laden der Seite, und wir haben zwei Funktionen hinzugefügt:
- Die Funktion start_widget wird unmittelbar bevor das Widget auf dem Bildschirm angezeigt wird, aufgerufen. Zu diesem Zeitpunkt starten wir unsere Uhr.
- Die Funktion stop_widget wird unmittelbar nach dem Entfernen des Widgets vom Bildschirm aufgerufen. Zu diesem Zeitpunkt stoppen wir unsere Uhr.
Der zweite Aufruf ist in unserem Fall nicht wirklich notwendig, da der Web Viewer beendet wird und alle Ressourcen freigegeben werden, aber es ist gut zu wissen. Einige Widgets erfordern Abschlussaufrufe an Backend‑Dienste, um ihren Zustand zu speichern.