JavaScript чтобы поймать event windows media

  • Всем привет, может кто сталкивался как перехватывать события медиа плеера , а то весь день в инете прокопался ничего не нашел, нужно чтобы если плеер находится в полном екране он отсылал событие нажатия любой клавиши ( не только esc) помогите пожалуста
    нугно чтобы работало в ИЕ

  • 23.2.2 Browserunabhдngige Ansteuerung


    Da die Codebasis des ActiveX-Controls und die Codebasis des Plugins zumindest zueinander дhnlich sind, stehen identische Funktionalitдten zur Verfьgung. Die Ansteuerung erfolgt aber stets auf unterschiedlichem Wege. Wдhrend das ActiveX-Control meistens einen Parameter bzw. eine Eigenschaft bietet, die einfach gesetzt werden muss, stehen beim Plugin ausschlieЯlich Methoden zur Verfьgung. Aus diesem Grund erfolgt jede Form der Ansteuerung ьber eine Fallunterscheidung, die zunдchst feststellt, ob die ActiveX- oder Plugin-Variante vorliegt.


    Um dies ьberhaupt unterscheiden zu kцnnen, gehen wir дhnlich wie im vorhergehenden Abschnitt vor. Nur unterscheiden wir diesmal ganz prosaisch zwischen dem Internet Explorer und dem Mozilla.


    function mp_nn() {
    return (navigator.plugins &&
    navigator.plugins["Windows Media Player Plug-in Dynamic Link Library"]);
    }



    function mp_ie() {
    return (window.ActiveXObject != null);
    }


    AuЯerdem benцtigen wir wieder ein spezielles Objekt, das einen einfachen Zugriff sowohl auf die eingebettete Datei als auch auf alle anderen Hilfsfunktionen ermцglicht:


    function mp_obj(ref) {
    this.obj = ref;
    this.play = mp_play;
    this.pause = mp_pause;
    this.stop = mp_stop;
    this.getVolume = mp_getVolume;
    this.setVolume = mp_setVolume;
    this.start = mp_start;
    this.ende = mp_ende;
    this.startReset = mp_start_reset;
    this.endeReset = mp_ende_reset;
    if (mp_ie()) {
    this.origEnde = 0;
    }
    this.lade = mp_lade_datei;
    this.getControls = mp_getControls;
    this.setControls = mp_setControls;
    return this;
    }


    Ist dieser Schritt erst einmal geschafft, schreibt sich der Rest fast von selbst. Fьr jede der einzelnen Funktionen muss eine Fallunterscheidung getroffen werden – ist es der Mozilla mit einem Plugin, ist es der Internet Explorer mit einem ActiveX-Control? – und dementsprechend die zugehцrige Methode aufgerufen werden. Da dieses Vorgehen dem Verfahren aus dem vorangegangenen Abschnitt дhnelt, sind an dieser Stelle die erlдuternden Ausfьhrungen zum Code knapper gehalten als im Rest des Kapitels.


    Beginnen wir mit den Grundfunktionen zum Abspielen der Daten. Hier unterscheiden sich die ActiveX- und die Plugin-Variante ьberhaupt nicht im Handling:


    function mp_play() {
    if (mp_nn() || mp_ie()) {
    this.obj.Play();
    }
    }
    function mp_pause() {
    if (mp_nn() || mp_ie()) {
    this.obj.Pause();
    }
    }


    function mp_stop() {
    if (mp_nn() || mp_ie()) {
    this.obj.Stop();
    }
    }


    Schon ein wenig schwieriger ist es mit der Lautstдrke. Das ActiveX-Control arbeitet mit der Eigenschaft Volume, das Plugin mit den Methoden SetVolume() und GetVolume():


    function mp_getVolume() {
    if (mp_nn()) {
    return this.obj.GetVolume();
    } else if (mp_ie()) {
    return this.obj.Volume;
    }
    }


    function mp_setVolume(v) {
    if (mp_nn()) {
    return this.obj.SetVolume(v);
    } else if (mp_ie()) {
    this.obj.Volume = v;
    }
    }


    Das Setzen eines Start- und Endpunktes fьr das Abspielen geschieht analog: Wieder kцnnen bei der ActiveX-Variante Eigenschaften direkt gesetzt werden, bei der Plugin-Version ist der Zugriff ьber Hilfsmethoden gekapselt. Beachten Sie im folgenden Code, wie beim erstmaligen Aufruf von mp_ende() der letzte Ende-Marker (und damit die Lдnge des Clips) in einer Objekteigenschaft zwischengespeichert wird.


    function mp_start(n) {
    if (mp_nn()) {
    this.obj.SetSelectionStart(n);
    } else if (mp_ie()) {
    this.obj.SelectionStart = n;
    }
    }
    function mp_ende(n) {
    if (mp_nn()) {
    if (this.origEnde == 0) {
    this.origEnde = this.obj.GetSelectionEnd();
    }
    this.obj.SetSelectionEnd(n);
    } else if (mp_ie()) {
    if (this.origEnde == 0) {
    this.origEnde = this.obj.SelectionEnd;
    }
    this.obj.SelectionEnd = n;
    }
    }


    Das Rьckgдngigmachen von mp_start() und mp_ende() geschieht wie zuvor bei den Audiodaten: Der Startpunkt wird auf 0 gesetzt, der Endpunkt auf den in origEnde zwischengespeicherten Wert:


    function mp_start_reset() {
    mp_start(0);
    }


    function mp_ende_reset() {
    if (this.origEnde != 0) {
    mp_ende(this.origEnde)
    }
    }


    Kommen wir zum vorletzten Punkt auf der Aufgabenliste: zum Laden einer neuen Datei. Das ActiveX-Control bietet dazu die Eigenschaft FileName, das Plugin die Methode SetFileName():


    function mp_lade_datei(x) {
    if (mp_nn()) {
    this.obj.SetFileName(x);
    } else if (mp_ie()) {
    this.obj.FileName = x;
    }
    }


    Zu guter Letzt sollen noch die Controls – das sind die eingebauten Steuerungsmцglichkeiten inklusive der Option, innerhalb der Datei zu springen und zu spulen – ein- und ausgeblendet werden kцnnen. Dazu gibt es fьr das ActiveX-Control die boolesche Eigenschaft showControls (true = Controls werden angezeigt, false = Controls werden nicht angezeigt) und fьr das Plugin die Methode SetShowControls().


    function mp_getControls() {
    if (mp_nn()) {
    return this.obj.GetShowControls();
    } else if (mp_ie()) {
    return this.obj.showControls;
    }
    }


    function mp_setControls(b) {
    if (mp_nn()) {
    this.obj.SetShowControls(b);
    } else if (mp_ie()) {
    this.obj.showControls = b;
    }
    }



    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.