ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
831
831
EMPFEHLEN
-
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 :1 2 3 4 5 6
<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 :
Der Ausgangsquelltext ist der javascript Quelltext von dieser Seite : http://www.jeroenwijering.com/embed/javascript.htmlHTML-Code:<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>
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 überaber nicht über meinen Weg?HTML-Code:<a href="javascript:sendEvent('playpause')">link</a>
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
-
...auf diese Art bewirkst du nicht, wie du vielleicht vermutest, dass "play()" beim "onfocus" gestartet wird....es wird sofort ausgeführt.Code :
1
window.onFocus = play()
Korrekt sollte es so lauten:
Code :1
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 :1 2 3 4 5 6
<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 :1 2 3 4 5 6 7
<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?Geändert von topf (18.04.07 um 01:42 Uhr)
-
Okay, ich kriegs nicht hin.
die Fehlermeldung bleibt und ich hab keine Ahnung mehr, wie ich das verzögere.
Gruß Lars
-
Ist das Ganze online?...dann könnte man mal auf Fehlersuche gehen.
-
Ja, man kann es sich hier:
http://www.t0pf.de/javascript_test/
anschauen.
-
Hast du schon mal probiert, das per setTimeout() etwas später zu starten?
-
Hihi, auf die Idee bin ich noch nicht gekommen. Es scheint aber zu gehen.
Entschuldigung für deine geraubte Zeit.
Ich organisiere mir jetzt erstmal ein anständiges Buch, um mehr zu erfahren.
Dankeschön für die Hilfe!
// edit : zu früh gefreut, jetzt funktioniert das andere nichtmehr
HTML-Code:<script type="text/javascript"> window.onload=function() { window.setTimeout("play()", 1000); window.onfocus=function(){play();} } </script>
Geändert von topf (18.04.07 um 15:41 Uhr)
-
Brauchst dich nicht entschuldigen...dazu ist das Forum ja da....und der Papagei hat die Zeit eh unterhaltsam gestaltet
-
Es kann sich doch nicht als allzu schwer gestalten folgendes zu realisieren.
Wenn das Fenster aktiv ist:
Direkt abspielen, also Funktion play() aufrufen.
Wenn Sie nicht aktiv ist, warten bis sie wieder aktiv ist und dann Funktion play() aufrufen.
Irgendwas geht in mein Hirn nicht rein.
Zum Heulen sowas
Danke dennoch,
Gruß Lars
// edit:
Also ich habe das onload weggelassen und arbeite nun nur mit onfocus + setTimeout. jetzt gehts. komisch dieses javascript.Geändert von topf (18.04.07 um 21:08 Uhr)
-
Hallo, ich bins nochmal.
Und zwar :
Die angedachte Lösung per onfocus geht zwar mit Mozilla und dem Internet Explorer. Aber nicht mit Opera.
Woran kann das liegen. Ich habe ein wenig in Dokumentationen gestöbert, aber ich finde keine Klarheit, wieso das nicht geht.
Gruß Lars
Ähnliche Themen
-
Fenster dragging aktiv?
Von AckiB im Forum C/C++Antworten: 2Letzter Beitrag: 19.04.10, 14:55 -
Comand in Toolbar aktiv, wenn View nicht aktiv
Von Miriam84 im Forum JavaAntworten: 0Letzter Beitrag: 11.10.09, 20:32 -
Beliebiges Fenster => Status: Aktiv
Von SeltenerMann im Forum JavaAntworten: 2Letzter Beitrag: 06.04.09, 14:49 -
JavaScript aktiv?
Von xX Hardy Xx im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 28.12.06, 01:34 -
Seite aktiv?
Von ollek81 im Forum Flash PlattformAntworten: 6Letzter Beitrag: 03.05.02, 20:37





Zitieren
Login





