flash blockiert JavaScript-Ereignisse

8

Dies ist eine Bearbeitung des ursprünglichen Posts, jetzt, wo ich das Problem besser verstehe. Jetzt mit Quellcode!

Wenn in IE, Körper (oder eine andere HTML-Div hat den Fokus), dann drücken Sie die Taste & amp; Klicken Sie auf selbe Zeit , und lassen Sie dann los ... ein Schlüsselereignis wird nie ausgelöst . Es wird nicht in Javascript oder Flash ausgelöst. Wo ist dieses Keyup-Ereignis?

Dies ist die Reihenfolge der Ereignisauslösung, die Sie stattdessen erhalten:

  1. javascriptKeyEvent: bodyDn ** currentFocusedElement: body
  2. javascriptKeyEvent: docDn ** currentFocusedElement: body
  3. actionScriptEvent: Aktivieren Sie ** currentFocusedElement: [object]
  4. actionScriptEvent: mouseDown ** currentFocusedElement: [Objekt]
  5. actionScriptEvent: mouseUp ** currentFocusedElement: [Objekt]

Nachfolgende Keydown- und Keyup-Ereignisse werden vom Flash erfasst, aber das anfängliche keyUp wird nie ausgelöst. Und ich brauche diesen Schlüssel!

Was nicht funktioniert:

  • überprüft, ob der Schlüssel ohne einen Listener abgelaufen ist. Überprüfen Sie, ob ein Schlüssel nicht aktiv ist?
  • wmode undurchsichtig oder direkt. Obwohl es undurchsichtig ist, ist es viel schwieriger zu reproduzieren.
  • Schieben Sie den Fokus zurück auf Javascript so schnell wie möglich, um das up-Ereignis zu erfassen. (Versuche dies mit einem Unschärfe-Listener in Javascript und setze den Fokus, wenn as3 aktiviert ist.)
  • weder jquery noch der Prototyp erfassen die fehlende keyup
  • statische und dynamische swfobject-Veröffentlichung

Hier ist das html / javascript:

%Vor%

Hier ist der as3-Code:

%Vor%     
jedierikb 16.03.2010, 19:38
quelle

2 Antworten

1

Hier ist, was ich erwarte, ist los: Sie drücken, während der Fokus in HTML ist. Sie klicken auf das Flash-Objekt und der Fokus geht darauf. Wenn der Schlüssel aufgehoben wird, weil der HTML-Code nicht mehr fokussiert ist, weiß er nichts über den Schlüssel. Sie könnten dies einfach testen, indem Sie nur das gleiche tun, anstatt auf das Flash-Objekt zu klicken, auf ein anderes Fenster zu klicken und dasselbe zu versuchen, denn das ist tatsächlich, was passiert.

Da das Key-Up-Ereignis im Flash nicht auftritt, liegt das wahrscheinlich daran, dass es keine Key-Up-Ereignisse generiert, ohne dass eine Taste gedrückt wird, die es nie erhalten hat, weil der Fokus immer noch in HTML war.

Ich kann mir zwei mögliche Lösungen vorstellen. Die erste besteht darin, sicherzustellen, dass das Flash-Objekt mit dem Fokus beginnt . Die zweite besteht darin, ein leeres Div über das Flash-Objekt zu legen, sodass nie den Fokus erhält.

    
Russell Leggett 29.03.2010, 21:23
quelle
0

Platzieren Sie Ihre SWF-Einbettung vor jedem anderen JavaScript.

%Vor%

Ich würde es außerhalb aller Funktionen oder in einer documentfähigen jQuery-Funktion versuchen, weil Flash einen z-Index von unendlich erhält und Schlüsselstriche vor allem anderen akzeptieren sollte, es sei denn, es ist noch nicht vorhanden, wenn die erste Schlüsseleingabe erfolgt.

Meine Vermutung ist, dass der erste Schlüssel auftaucht, bevor etwas empfangen werden kann. Versuchen Sie Ihren keyup event trigger mit jQuery in einer on document ready-Funktion.

    
Todd Moses 17.03.2010 20:34
quelle