Tab / Fenster aktiv

topf

Mitglied
Hallo,
ich habe eine simple Frage, die ich irgendwie nirgends beantwortet bekommen.
Ich weiss das es event-handler gibt und wie man sie benutzt. Allerdings scheint es mir nicht möglich sie darauf anzuwenden, ob ein Browsertab ( mozilla ) / Fenster aktiv ist.

Gibt es eine Möglichkeit, abzufangen ob ein Fenster "verlassen" ( Wechsel in einen anderen Tab ) oder "ausgewählt" wird?

Gruß Lars
 
das Letztere schon, das ginge über "onfocus".

Mit dem Verlassen eher nicht, da gibt es zwar den Event "onblur", der feuert aber bspw. auch, wenn du in die Adressleiste klickst oder auf ein anderes Programmfenster etc., auch wenn die entsprechende Seite sich im Mozilla im aktiven Tab befindet.

Zum Testen, was wann feuert:
Code:
<script type="text/javascript">
<!--
window.onfocus=function(){document.title='aktiv';}
window.onblur=function(){document.title='inaktiv';}
//-->
</script>
 
Okay, danke dafür ich habe jetzt allerdings ein neues Problem, welches ich mir ehrlich nicht erklären kann.
Ich benutze für ein paar Tests den Flash Video Player von Jeroen Wijering. Dieser kann neuerdings (?) auch javascript.

Ich wollte es so bewerkstelligen ( daher auch das Thema ) , dass ein Video nur dann abgespielt wird, falls das Fenster aktiv ist .


Ein Auszug aus meinem Quelltext :

HTML:
<script type="text/javascript">
<!-- Platzhalter für Ausgangsquelltext der Seite von Jeroen Wijering --> 
var FO = <media-player-object-mit-entsprechenden-parametern>
UFO.create(FO, "player");


var plays = false

play = function() {
if ( plays == false) {
     sendEvent('playpause') // vorgegebener Befehl
     plays = true;
}
}



window.onFocus = play()
</script>
<div id="player"></div>
Der Ausgangsquelltext ist der javascript Quelltext von dieser Seite : http://www.jeroenwijering.com/embed/javascript.html

Ob er bereitgestellt ist oder nicht, sei dahingstellt. Wird mir keiner für meine Tests verübeln, denk ich.

Nun zu meiner Frage:
Auf der Seite kann mit einem Klick das Start / Stop ausgeführt werden.
Wieso geht es nicht mit meinem window.onFocus-Aufruf?

Ich bekomme einen "... has no properties"-Fehler, aber warum ?
Wieso geht es per Linkclick über
HTML:
 <a href="javascript:sendEvent('playpause')">link</a>
aber nicht über meinen Weg?

Ist irgendwas falsch positioniert? Also ruf ich was auf, was zum Aufrufzeitpunkt noch nicht existiert?

Ich hab irgendwie überhaupt keine Ideen mehr.

Danke nochmal für die bereits beantwortete Frage.

Gruß Lars
 
Code:
window.onFocus = play()
...auf diese Art bewirkst du nicht, wie du vielleicht vermutest, dass "play()" beim "onfocus" gestartet wird....es wird sofort ausgeführt.

Korrekt sollte es so lauten:
Code:
window.onfocus=play;

Abgesehen davon könnte ich mir vorstellen, dass es Probleme gibt, weil die Funktion u.U. aufgerufen wird, bevor der Player fertiggestellt ist.
Probiere es daher mal so:
Code:
<script type="text/javascript">
window.onload=function()
{
  window.onfocus=function(){play();}
}
</script>
 
Hmm, hat hingehauen,
danke.

Jetzt muss ich nurnoch den Standardfall abfragen,
also falls das Fenster direkt aktiv ist.

Sonst kommt der Fehler wieder ://

Danke für die bisherige lehrreiche Hilfe!
 
Das kannst du gleich beim onload mit einbauen:
Code:
<script type="text/javascript">
window.onload=function()
{
  play();
  window.onfocus=function(){play();}
}
</script>
 
Das hatte ich auch versucht.
Allerdings wollte er das nicht.
Den Onload-Aufruf hab ich ganz nach unten gepackt.

Das ist ein Gefriermel damit. Kostet ganz schön Zeit.
Zum Glück hab ich momentan frei.

// edit : Die Fehlermeldung hat sich nun auch geändert auf : . .sendEvent() is not a function.
Die Funktion könnte noch nicht ausgeladen sein oder sowas? Oder der Player noch nicht existent. Könnte man da irgendeine Verzögerung einbauen irgendwie?
 
Zuletzt bearbeitet:
Okay, ich kriegs nicht hin.
die Fehlermeldung bleibt und ich hab keine Ahnung mehr, wie ich das verzögere.


Gruß Lars
 
Zurück