Hintergrund bild, falls swf nicht ladbar

JamesT

Erfahrenes Mitglied
Hallo,

folgendes Problem:

Ich habe eine tabellenzelle in der ein banner als hintergrund definiert ist, darüber läuft ein flashbanner. Wenn nun jemand das Banner aufgrund fehlendem flash player nicht laden kann, wäre es schön wenn er anstelle dessen einfach das banner was im hintergrund liegt, sieht.

Bei mir klappt das leider nicht, da die fläche für das fehlende flash banner weiß bleibt und sozusagen über dem hintergrund liegt.

Hat jemand eine idee dazu?

Grüße und dank im voraus.

Jamest
 
mann kann beim veröffendlichen in Flash einstellen das ein Alternativ Bild geladen werden soll (man benutze ein Tranzparentes PNG 1X1 Pixel). Funktioniert bei mir allerdings nur im IE ...
Daher bastel ich meistens 2 Seiten (einmal mit Flash und einmal ohne). Auf die Startseite mach ich dann ein Flasch 1X1 Pixel gross welches sofort die Flash Seite Laden soll. Falls Flash nicht angezeigt werden kann wird Diese logicherweise auch nicht aufgerufen. Dann muss nur noch:

<meta http-equiv="refresh" content="5;URL=SeiteOhneFlash.html">

bzw. bei PHP kann man ja
<meta http-equiv="refresh" content="5;URL=seite.php?flash=no">
.... aber das führt jezt zu weit.

im <head> drinne stehn und nach 5 sec. wird dann die Page ohne Fla. geladen.

ist meiner meinung nach die bessere Lösung als die von Macromedia vorgegebene Javasript Lösung. weil z.B. bei meinem Browser muss ich erst erlauben JS für die Seite zu benutzen(s. nuzliches Plugin f. Firefox).
 
Würde meinem Vorredner größtenteils zustimmen. Jedoch trotzdem hier von mir eine ziemlich nette Javascript-Lösung:

HTML:
<html>
<head>
<script language="javascript" type="text/javascript">
function checkForFlash() {

var flashinstalled = 0;

if (navigator.plugins && navigator.plugins.length)
{
   x = navigator.plugins["Shockwave Flash"];

   if (x) { flashinstalled = 2; }

   else { flashinstalled = 1; }

   if (navigator.plugins["Shockwave Flash 2.0"]) { flashinstalled = 2; }
}

else if (navigator.mimeTypes && navigator.mimeTypes.length)
{
   x = navigator.mimeTypes['application/x-shockwave-flash'];

   if (x && x.enabledPlugin) { flashinstalled = 2; }
   else { flashinstalled = 1; }
}

return flashinstalled;
}

function setBannerOderFlash() {

   var container = document.getElementById("bannerOderflash");
   var inhalt;

   if (checkForFlash() == 2) {

      /* Flash ist installiert: object-Tag ausgeben */
      inhalt = "<object ....></object>";
   }

   else {

      /* Flash ist nicht installiert: Bild ausgeben */
      inhalt = "<img src='bild.jpg' alt='' title='' />";

      /* Oder komfortabel mit Hilfe von CSS das Hintergrundbild setzen */
      /* inhalt.style.backgroundImage = "url('/pfad/zum/bild')"; */
   }

   container.innerHTML = inhalt;

return true;
}
</script>
</head>

<body onload="return setBannerOderFlash();">
   <table>
      <tr>
      <td id="bannerOderflash"></td>
      </tr>
   </table>
</body>
</html>

Die Funktion 'checkForFlash()' habe ich auf das Wesentliche für diesen Fall reduziert, aber original stammt diese von http://www.quirksmode.org/js/flash.html.

Die Funktion prüft logischer Weise ob Flash installiert ist oder nicht und gibt dir als return-Value 0,1 oder 2 zurueck wobei 0 und 1 mit 'nicht installiert' und 2 mit 'flash ist installiert' gleichzusetzen ist.

Die 2te Funktion nutzt den Rückgabewert von 'checkForFlash()' und entscheided dadurch ob der object-Tag für Flash oder das Hintergrundbild gesetzt werden soll.

Finde die Lösung ganz niedlich aber natürlich ist das Problem vorhanden, sollte jemand JS bei sich "abgestellt" haben.
 
Hi und vielen Dank für die Ideen,

die von Tecco gefällt mir echt prima, hab da nur ein problem.

Wenn ich im body tag das onload="return setBannerOderFlash(); verwende ist die ganze seite links ausgerichtet, wenn ich es rausnehme ist wieder alles zentriert so wie vorher.

Wie wirkt sich das ganze aus? Bzw. wie kann ich das abstellen?

Vielen Dank schonmal für die Hilfe von euch.

Grüße

Jamest
 
JamesT hat gesagt.:
onload="return setBannerOderFlash();

Ich nehme an, dass du das fehlende Anführungszeichen aus Versehen vergessen hast? ;)

Ansonsten habe ich keine Idee warum die Seite auf einmal dadurch linksbündig dargestellt werden sollte. Das hat wahrscheinlich etwas mit deiner direkten Dokumentenstruktur zu tun (u.A.: hast du einen validen DOCTYPE angegeben auf deiner Seite?).

Gibt es die Möglichkeit sich die Seite mal anzugucken?
 
Also wenn ich in Opera die Plugins abschalte, dann klappt es mit <noembed> ganz gut, da ich es aber noch nie verwendet habe weiß ich nicht wie es sich bei anderen Browsern verhält.

Aber mit JS nach Flash zu gucken finde ich auch ein bisschen eigenartig, da man somit ein Plugin benutzt um ein anderes zu testen. *am Kopf kratz*
 
Hallo Teccco,

die website zieht gerade auf einen neuen Server um, ich werde dir dann hier einen link posten wo du mal schauen kannst. OK?

Grüße

Jamest
 
Alles klar, JamesT.

@King Euro: Das ist schon richtig was du sagst, zumal man ja auch die Möglichkeit hat Javascript auszuschalten, keine Frage. Aber ehrlich gesagt sprechen da die Zahlen der User die Javascript nicht ausgeschaltet haben doch schon sehr für diese Variante mit Javascript.
 
Naja, wenn es mit <noembed> wirklich geht, dann wäre das eigentlich die schönste Variante. Also ich persönlich verwende auch immer den <noscript>-Tag für Leute die eben kein Javascript aktiviert haben (falls es denn nötig ist (z.B. bei Popups)).

Da <noembed> ja reines HTML ist wäre es die beste Lösung, man müsste eben nur mal testen ob es sich auch so verhält wie es soll. :confused:
 
Hi

Du definierst einfach in der Tabelle, in der das Flashobjekt
plaziert ist ein Hintergrundbild. Das wird dann angezeigt, wenn
der Browser (aus welchem Grund auch immer) das Flashobjekt
nicht anzeigt....

Bei mir funktioniert das...


>>ICE
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück