tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
831
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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>
     

  3. #3
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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-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>
    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-Code:
     <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
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Code :
    1
    
    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 :
    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>
     

  5. #5
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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!
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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>
     

  7. #7
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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)
     

  8. #8
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    Okay, ich kriegs nicht hin.
    die Fehlermeldung bleibt und ich hab keine Ahnung mehr, wie ich das verzögere.


    Gruß Lars
     

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ist das Ganze online?...dann könnte man mal auf Fehlersuche gehen.
     

  10. #10
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    Ja, man kann es sich hier:
    http://www.t0pf.de/javascript_test/
    anschauen.
     

  11. #11
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hast du schon mal probiert, das per setTimeout() etwas später zu starten?
     

  12. #12
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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)
     

  13. #13
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Brauchst dich nicht entschuldigen...dazu ist das Forum ja da....und der Papagei hat die Zeit eh unterhaltsam gestaltet
     

  14. #14
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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)
     

  15. #15
    topf topf ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Hörstel
    Beiträge
    88
    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

  1. Fenster dragging aktiv?
    Von AckiB im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 19.04.10, 14:55
  2. Antworten: 0
    Letzter Beitrag: 11.10.09, 20:32
  3. Beliebiges Fenster => Status: Aktiv
    Von SeltenerMann im Forum Java
    Antworten: 2
    Letzter Beitrag: 06.04.09, 14:49
  4. JavaScript aktiv?
    Von xX Hardy Xx im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 28.12.06, 01:34
  5. Seite aktiv?
    Von ollek81 im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 03.05.02, 20:37