Objekt-Fokus-problem mit Safari und Chrome Browser
Habe ich die folgende javascript aufgerufen wird, um eine Anfrage für ein Fokus, wenn die Seite geladen ist.
Dieser code funktioniert 100% OK mit Firefox und IE7, aber Chrome und Safari nicht scheinen, um den Fokus auf alle. Wie es funktioniert mit allen Browsern?
document.getElementById("MyFlashFile").focus();
- Dies ist noch nicht in der aktuellen build von Chrome für Windows (Version 28.0.1500.72 m) keine der workarounds funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gewährleisten dieser code wird aufgerufen, nachdem die gesamte Seite gerendert wurde. Es ist wahrscheinlich, aufgerufen wird, oberhalb der HTML bezieht, so wird das element nicht existiert.
Verschiedenen JavaScript-frameworks haben Dienstprogramme, um Ihnen zu sagen, wenn die DOM ist fertig.
Es hat mich Stunden im Internet zu suchen, aber schließlich fand ich eine Lösung, die auf die neuesten Versionen von IE, Firefox, Chrome und Safari.
Der folgende code löst das problem gut:
Diesem Beispiel wird davon ausgegangen das flash eingebettet ist, mit dem SWFObject-Bibliothek. Wenn nicht, sollten Sie die f-variable, um die Object-oder Embed-tag, das hält den flash-Film.
Bearbeitet am 5. Mai 2012: Naja, leider scheint es, dass die
tabIndex
workaround funktioniert nicht mehr für alle Kombinationen von browser (Chrome/Safari) und Betriebssystem.Zum Beispiel, derzeit Chrome 18 unter Windows schlägt fehl.
Siehe den link unten zur Verfügung gestellt von Christian Junk, um den status des Problems ist die Auflösung.
if
- Anweisung. Die Warnung zeigt, aber der flash ist nicht fokussiert. Ich habe auch versucht, erstellen Sie eine einfache Seite mit nur einem Textfeld (kein flash) und Einstellung Fokus auf dieses Textfeld, die dort arbeiten, aber nicht für den flash-Seite. Ich habe auch versucht, mitdocument.getElementById
stattswfobject.getObjectById
, die hatte immer noch das gleiche Ergebnis. So wie es aussieht ist es etwas anderes falsch, da wir wissen, dasfocus()
Funktion funktioniert und aufgerufen WIRD. Das ganze funktioniert mit dem IE und FF, aber nicht für Chrome oder Safari. Irgendwelche Vorschläge?params.wmode = "opaque";
. Für mich, das machte den start perfekt funktioniert, in Chrome und IE, aber dann FF und Safari sind schlimmer als jemals zuvor. Jetzt, Sie können nicht NICHTS eingeben, unabhängig davon, ob oder nicht Sie auf das Textfeld klickt. Ich nehme an, ich könnte einen browser-check, um nur festgelegt, dass die parameter für Chrome, aber ich würde wirklich gerne eine bessere Lösung, wenn jemand eine.Leider gibt es keine Möglichkeit um sicherzustellen, dass Sie setzen Fokus auf eine flash-Datei, die in allen Browsern funktioniert. IE und Firefox haben dieses problem gelöst (zum größten Teil), aber Chrome und Safari sind beide aus der Basis von Webkit, die nicht eine Lösung haben.
Wenn Sie jemals bemerkt, auf YouTube oder andere video - /flash-site, das erste, was Sie sehen, ist, etwas dazu zu verleiten, klicken Sie auf den player, dass ist aufgrund dieses Problems.
Einem Entwickler kam mit einer cleveren workaround, aber es funktioniert beinhalten das hinzufügen einige ActionScript-Code in Ihre flash-Datei, diese kann sein ein Schmerz in den Arsch, wenn Sie eine generische Spieler.
Gary Bishop: Befestigung Firefox Flash Dummheit
Andere Art von Lösung ist, um Ihre wmode auf opaque. Ich habe gehört, dass dies funktioniert in einigen Situationen, aber Schraube bis Cursor im text-Bereiche. Ich hatte noch nicht viel Glück mit diesen, aber Sie können give it a shot.
Finden Sie weitere Informationen über das nicht-Fokus-Fehler auf bugzilla.
Es scheint, dass es ein bug in Chrome:
"- Fenster.Dokument.getElementById('swfID').focus() funktioniert nicht für flash-Objekte"
http://code.google.com/p/chromium/issues/detail?id=27868
Habe ich versucht, einen workaround finden, aber ich war nicht in der Lage, einen zu finden ;(
Grüße,
Christian
Neben Cláudio Silva beantworten , müssen Sie
wmode="opaque"