2009-05-24 14 views
2

Ich entwickle eine ASP.NET-Website, die Nicht-Flash-Benutzer unterstützen muss.Testen der Flash-Fähigkeit auf der Serverseite

Wenn der Browser des Benutzers Flash nicht unterstützt oder Flash deaktiviert ist, möchte ich ein großes Splash-Bild in den Browser herunterladen.

Allerdings möchte ich keine Bandbreite verschwenden Download es, wenn der Flash macht richtig rendern.

So ist es möglich, von der Server-Seite mit .NET-Code zu testen, ob der Browser Flash unterstützt? Ich habe das Objekt "Request.Browser" durchsucht, konnte jedoch keine relevanten Informationen zu Flash finden.

Antwort

1

Sie könnten versuchen, einige Server var:

'HTTP_ACCEPT' gegen 'application/x-shockwave-flash'

Nicht sicher .NET aber es funktioniert die meiste Zeit in PHP. Dies funktioniert nicht in Safari, aber für das, was Sie tun, sollte das in Ordnung sein. Sie sparen sich 95% der Zeit eine gewisse Bandbreite. PHP Beispiel (nicht .NET aber Sie erhalten die Idee):

if (strstr($_SERVER['HTTP_ACCEPT'], 'application/x-shockwave-flash')){ 
    $hasFlash = true; 
} 
1

Aufgrund Ihrer Anforderung ich besser ein Flash-Erkennungsskript verwenden, die Flash-Funktionen auf dem Client erkennt und den Benutzer auf eine andere Seite umleiten, anstatt von Herunterladen der SWF-Datei. Sie können viele Skripte unter Kirupa finden, oder Sie können die verwenden, die im Dialogfeld mit den Flash-Veröffentlichungsoptionen generiert wird

1

Die clientseitige Flash-Erkennung ist wahrscheinlich der bessere Weg. Beachten Sie jedoch, dass Sie möglicherweise Benutzer mit JavaScript deaktiviert haben, z. B. Personen, die das NoScript-Plug-in verwenden. Sie haben drei grundlegende Möglichkeiten, damit umzugehen, die ich sehen kann.

  1. Ignorieren Sie es. Vielleicht haben Sie das Gefühl, dass nicht genug Leute in dieser Situation sind, über die es sich zu sorgen lohnt.

  2. Prüfen Sie, und haben Sie einen Indikator, der den Benutzer auffordert, JS für eine bessere Erfahrung auf dieser Site zu aktivieren. Dies geschieht normalerweise, indem die Nachricht auf der Seite gerendert wird und JS-Code hat, um das Rendering dieses Elements zu deaktivieren oder auszublenden.

  3. Versuch, einen relativ guten Seitenbetrieb ohne JavaScript zu unterstützen. Dies würde wahrscheinlich dazu führen, dass die große Bilddatei standardmäßig geladen wird und dass diese Ladung vor dem Start gestoppt wird. Das könnte schwierig sein.

3

Sie sollten dies nicht auf der Serverseite behandeln. Die meisten Flash-Erkennungs-/Einbettungsskripts führen diese Art von Verhalten standardmäßig aus. Ich empfehle SWFObject.

  • erstellen <div> mit Ihrem Bild (oder eine beliebige HTML Sie wirklich wollen) im Inneren
  • es eine ID zB Geben Sie: <div id="flash">
  • SWFObject Sagen Sie, dass die div-Block mit einem Flash-Player außer Kraft zu setzen

Wenn sie deaktiviert haben, sehen sie das unveränderte HTML.Wenn sie Javascript aktiviert haben, aber kein Flash-Plugin, sehen sie auch den HTML-Code. Im Grunde werden sie den Flash nur sehen, wenn sie JavaScript und das Flash-Plugin haben.

Das ist ungefähr so ​​gut wie es geht.

1

Es gibt sicherlich einige Gründe, warum Sie Flash auf der Serverseite erkennen möchten. Wir müssen bestimmte Teile komplett ersetzen oder auf einer Seite auslassen, wenn Flash nicht verfügbar ist. Es ist nicht so einfach wie das Anzeigen alternativer Inhalte an genau dem Ort, an dem der Blitz war. Wir müssen die HTML-Struktur weiter oben ersetzen. Und das müssen wir auch tun, wenn Javascript nicht verfügbar ist. Es ist nicht wirklich eine Option, JavaScript die Seite neu schreiben zu lassen, wenn Flash verfügbar ist und wir nicht einfach auf eine andere Seite umleiten können.

+0

Dies schließt nicht die Frage beantworten. Dies ist eher eine Neuformulierung der Frage –

0

Browser scheint nicht

application/x-shockwave-flash 

im Accept-Header zu senden. Sie senden nur */*

IE

x-flash-version 

mit Flash-Anfragen aus irgendeinem dummen Grund zu senden scheint ...

Verwandte Themen