2012-04-02 12 views
0

Ich habe eine Website mit einer einfachen Flash-Animation hinter einige Texte und halbtransparente Bilder als Hintergrund. Ich habe swfobject verwendet, um es einzubetten und wmode undurchsichtig einzustellen, damit es in den meisten Browsern korrekt angezeigt wird.Flash immer oben in Android Browserumgehung?

Für Browser ohne Flash bekommt der Benutzer stattdessen ein statisches Hintergrundbild und würde nicht wissen, dass ihnen irgendetwas fehlt. Android-Nutzer erhalten jedoch den Flash Hintergrund oben auf alles wie das bekannte Problem mit wie Flash-Inhalte im Android-Browser gerendert wird, die Website unbrauchbar zu machen.

Ich habe einen rohen Browser sniff JavaScript-Funktion zum swfobject Code hinzugefügt, um es für jeden User-Agent whith ‚Handy‘ in es von Laden zu verhindern:

<script type="text/javascript"> 
if (navigator.userAgent.indexOf('Mobile') == -1) 
    { 
     var flashvars = {}; 
     var params = { wmode: "opaque" }; 
     var attributes = {}; 
     swfobject.embedSWF("Images/Layout/center_flash.swf", "flashBg", 
     "1004", "502", "9", "false", flashvars, params, attributes); 
    } 
</script> 

Das einzige Problem, das ich für Android Benutzer haben ist Surfen mit "Mobile View" deaktiviert, da der Benutzer-Agent vorgibt, eine Desktop-Version von Safari zu sein (glaube ich). Ich möchte die Flash-Animation nicht für alle Safari-Benutzer deaktivieren. Gibt es eine Möglichkeit, sie nur für Andriod-Benutzer zu blockieren - selbst wenn sie "Mobile View" deaktiviert haben?

Mögliche Ideen sind:

  • die Flash-Version mit JavaScript oder Flash-Erkennung. Verwendet Android spezifische Versionen (Versionsnummern) von Flash, die sich von denen auf dem Desktop unterscheiden?
  • blockiert die spezifischen Benutzeragenten, die von Android-Geräten verwendet werden, wenn 'Mobile View' deaktiviert ist.

Hat jemand eine wirksame Abhilfe für dieses Problem gefunden?

Ihre Hilfe/Eingabe ist willkommen!

+0

Mehr über dieses Problem zu betrachten auf mein [Blog] (http://peterchinkin.tumblr.com/post/21268904763/flash-on-android-on-top-bug). –

Antwort

0

Sie können Android nur erkennen, indem Sie den Useragent des Browsers in Ihrem JavaScript-Überprüfung

Etwas wie folgt aus:

if (navigator.userAgent.toLowerCase().indexOf("android") != -1) 
{ 
    // It's android 
} 

Was die Flash-Ausgabe selbst, ich weiß nicht, wie ich es nie Verwendung Blitz: P

bearbeiten

Sie können auch diese Technik für andere Useragents verwenden (I.E. iPhone, iPad, Safari)

edit2

Sorry, ich ging gerade auf dem Android-Handy und realisiert die aktuelle Einstellung der Useragent zu jeder Anwender Picks ändert (Desktop/ipad/iphone/Safari). Das ist nicht gut, ich entschuldige mich.

Leider ist das, was Sie fragen, sehr schwierig. Es gibt keine eindeutigen Bezeichner in der Android-Flash-Version, um Ihnen zu helfen. Und die Tatsache, dass Android den userAgent verfälscht, macht es unmöglich zu erkennen, ob sie auf dem Handy sind oder nicht.

+0

Danke für diesen Vorschlag, aber der android userAgent meines Telefons ist "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, wie Gecko) Version/5.0 Safari/533.16" wenn "Mobile Ansicht" ist deaktiviert. Ich denke, das hängt davon ab, welche Telefon- und Betriebssystemversion du hast. Gibt es etwas darin, solche Benutzer zu isolieren? –

+0

@PeterChinkin Ich entschuldige mich, soweit ich weiß gibt es keine Möglichkeit zu identifizieren, ob Flash eine mobile Version ist oder nicht. (Der einzige Weg ist durch UserAgent Erkennung, welche Android-Browser im Desktop-Modus spoofs). Es gibt keine eindeutigen Bezeichner in den userAgent-Plugins, um Flash als mobile Version (AFAIK) zu identifizieren. Ich schlage vor, adobe support eine E-Mail weiterzuleiten, um zu sehen, ob ich falsch liege, da ich nicht sehr oft mit Flash arbeite. – bbedward

+0

@PeterChinkin Und über Javascript haben Sie keinen Zugriff auf Android OS-Anrufe zu bestimmen, ob es Android ist oder nicht. Sie sind also strengstens auf die Nutzerinformationen beschränkt. – bbedward

0

Es gibt Dienste, die Ihnen anhand ihrer IP-Adresse mitteilen können, ob ein Benutzer ein Mobilgerät ist.

Es tut mir leid ich zu sagen weiß nicht, wie schnell, zuverlässig, oder teuer sie sind, aber wenn Sie feststellen müssen, ob ein Benutzer auf Android, das ist eine Allee

+0

Sorry, ich habe gerade gesehen, wie alt diese Frage ist, aber ich denke, ich werde meine Antwort hinterlassen, falls jemand danach sucht ... –