Tabela treści

Podobnie jak wszystkie typy treści w Portalu, aplikacje są wstępnie ładowane podczas odtwarzania. Oznacza to, że może upłynąć kilka sekund (lub nawet minut) pomiędzy załadowaniem instancji Widgetu na Web Viewer Odtwarzacza, a faktycznym wyświetleniem Widgetu na ekranie.

To ma dwa skutki:

  • Jeśli Twój Widget nie jest statyczny (np. wyświetlasz listę odtwarzania obrazów), musisz wiedzieć, kiedy Widget zostanie wyświetlony, aby móc rozpocząć swoją sekwencję.
  • Jeśli Twój Widget jest zasobożerny, tracisz zasoby Odtwarzacza, co może skutkować złym doświadczeniem odtwarzania.

W przypadku „Simple Clock” żadna z powyższych sytuacji nie występuje, ale załóżmy, że chciałbyś rozpocząć zegar, gdy Widget zostanie wyświetlony, i zatrzymać zegar, gdy Widget zostanie ukryty.

Zmodyfikuj kod Widgetu w następujący sposób:

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>

Zmiany wyjaśnione

Jak widać, nie rozpoczynamy teraz zegara przy ładowaniu strony, i dodaliśmy dwie funkcje:

  • Funkcja start_widget jest wywoływana tuż przed wyświetleniem Widgetu na ekranie. Wtedy zaczynamy nasz zegar.
  • Funkcja stop_widget jest wywoływana tuż po usunięciu Widgetu z ekranu. Wtedy zatrzymujemy nasz zegar.

Drugi wywołanie w naszym przypadku nie jest naprawdę konieczne, ponieważ Web Viewer zakończy pracę, a wszystkie zasoby zostaną zwolnione, ale warto to wiedzieć. Niektóre Widgety wymagają wywołań finalizacyjnych do usług backendowych, aby zapisać swój stan.