Zum Inhalt springen

Flash und Typo3

Erstellt am 20. Juni 2006 · 6 Antworten · letzte Antwort am 21. Juni 2006

Tags: Frage

kilim ·

Hallo,

ich habe eine Seite mit Typo3 erstellt und eine Flash-Animation eingefügt. Wenn ich nun die Seite im FE betrachte, ist an der Stelle, wo die Animation laufen sollte, nur eine Fläche zu sehen, aber keine Animation. Da steht als Fehlermeldung "Flash-Film nicht geladen". Wenn ich aber die HTML-Vorlage anschaue, läuft alles wunderbar. Woran liegt das?

Für Antworten bin ich dankbar.

PS: Ich benutze Typo3 4.0 und Flash 8.

Unbekannter Benutzer ·

Wie hast du denn den Flashfilm eingebunden ( Extension, direkt im Template, über TS)?

Wie sieht der Quellcode deines Templates aus (also der Teil wo der Flashfilm kommt) und wie sieht dann der selbe Teil später im FE aus?

kilim ·

Ich habe den Flashfilm direkt im Template eingebunden. Das sieht so aus:

<!-- ###DOKUMENT### begin -->
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globale Variablen
// Erforderliche Hauptversion von Flash
var requiredMajorVersion = 6;
// Erforderliche Unterversion von Flash
var requiredMinorVersion = 0;
// Erforderliche Flash-Revision
var requiredRevision = 0;
// Die unterstützte JavaScript-Version
var jsVersion = 1.0;
// -----------------------------------------------------------------------------
// -->
</script>
<script language="VBScript" type="text/vbscript">
<!-- // Visual Basic-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player ActiveX-Steuerelements erforderlich
Function VBGetSwfVer(i)
  on error resume next
  Dim swControl, swVersion
  swVersion = 0

  set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))
  if (IsObject(swControl)) then
    swVersion = swControl.GetVariable("$version")
  end if
  VBGetSwfVer = swVersion
End Function
// -->
</script>
<script language="JavaScript1.1" type="text/javascript">
<!-- // Client-Browsertyp ermitteln
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// JavaScript-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player Plug-Ins erforderlich
function JSGetSwfVer(i){
	// NS/Opera-Version >= 3 auf Flash-Plug-In im Plug-In-Array prüfen
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 unterstützt Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 unterstützt Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// älteres WebTV unterstützt Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Ermittlung in allen anderen Fällen nicht möglich
	else {

		flashVer = -1;
	}
	return flashVer;
}
// Wenn der Funktionsaufruf ohne Parameter erfolgt, gibt diese Funktion einen Gleitkommawert zurück,
// bei dem es sich entweder um die Flash Player-Version oder um 0.0 handelt.
// Beispiel: Flash Player 7r14 gibt 7.14 zurück.
// Wenn reqMinorVer, reqMajorVer, reqRevision aufgerufen wird, wird 'true' zurückgegeben, sofern diese bzw. eine höhere Version verfügbar ist
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// Versionen rückwärts durchlaufen, bis die neueste Version gefunden wird
	for (i=25;i>0;i--) {
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);
		}
		if (versionStr == -1 ) {
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];

			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// ist die Hauptrevision >= angeforderte Hauptrevision UND die Nebenversion >= angeforderte Nebenversion
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
			}
		}
	}
	return (reqVer ? false : 0.0);
}
// -->
</script>

<table cellspacing="0">
    <tr width="100%">
        <td width="800" colspan="3">
<script language="JavaScript" type="text/javascript">
<!--
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) {  // sofern eine akzeptable Version ermittelt wurde
    var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="../flash/oidfertig.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#f8c369" />'
    + '<embed src="../flash/oidfertig.swf" quality="high" bgcolor="#f8c369" width="800" height="300" name="oidfertig" align="middle" play="true" loop="true" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';
    document.write(oeTags);   // Flash-Film einbetten
  } else {  // Flash ist veraltet, oder das Plug-In wurde nicht ermittelt
    var alternateContent = 'Alternativer HTML-Inhalt sollte hier platziert werden.'
  	+ 'Für diesen Inhalt ist der Macromedia Flash Player erforderlich.'
   	+ '<a href="http://www.macromedia.com/go/getflash" />Flash installieren</a>';
    document.write(alternateContent);  // Nicht aus Flash stammenden Inhalt einfügen
  }
// -->
</script>
<noscript>
	// Stellen Sie alternativen Inhalt für Browser bereit,
	// die keine Skriptunterstützung bieten bzw. in denen Skripts deaktiviert wurden.
  	Alternativer HTML-Inhalt sollte hier platziert werden. Für diesen Inhalt ist der Macromedia Flash Player erforderlich.
  	<a href="http://www.macromedia.com/go/getflash/">Flash installieren</a>
</noscript>
         </td>
    </tr>
    <tr>
        <td>
            ###LINKS###
        </td>
        <td>
            ###INHALT###
        </td>
        <td>
            ###RECHTS###
        </td>
    </tr>
</table>
<p>###UNTEN###</p>
<!-- ###DOKUMENT### end -->

Im FE sieht es dann so aus:

...
<body>

<script>
<!--
// -----------------------------------------------------------------------------
// Globale Variablen
// Erforderliche Hauptversion von Flash
var requiredMajorVersion = 6;
// Erforderliche Unterversion von Flash
var requiredMinorVersion = 0;
// Erforderliche Flash-Revision
var requiredRevision = 0;
// Die unterstützte JavaScript-Version
var jsVersion = 1.0;
// -----------------------------------------------------------------------------
// -->
</script>
<script>
<!-- // Visual Basic-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player ActiveX-Steuerelements erforderlich
Function VBGetSwfVer(i)
  on error resume next
  Dim swControl, swVersion
  swVersion = 0

  set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))
  if (IsObject(swControl)) then
    swVersion = swControl.GetVariable("$version")
  end if
  VBGetSwfVer = swVersion
End Function
// -->
</script>
<script>
<!-- // Client-Browsertyp ermitteln
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// JavaScript-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player Plug-Ins erforderlich
function JSGetSwfVer(i){
	// NS/Opera-Version >= 3 auf Flash-Plug-In im Plug-In-Array prüfen
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 unterstützt Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 unterstützt Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// älteres WebTV unterstützt Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Ermittlung in allen anderen Fällen nicht möglich
	else {

		flashVer = -1;
	}
	return flashVer;
}
// Wenn der Funktionsaufruf ohne Parameter erfolgt, gibt diese Funktion einen Gleitkommawert zurück,
// bei dem es sich entweder um die Flash Player-Version oder um 0.0 handelt.
// Beispiel: Flash Player 7r14 gibt 7.14 zurück.
// Wenn reqMinorVer, reqMajorVer, reqRevision aufgerufen wird, wird 'true' zurückgegeben, sofern diese bzw. eine höhere Version verfügbar ist
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// Versionen rückwärts durchlaufen, bis die neueste Version gefunden wird
	for (i=25;i>0;i--) {
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);
		}
		if (versionStr == -1 ) {
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];

			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// ist die Hauptrevision >= angeforderte Hauptrevision UND die Nebenversion >= angeforderte Nebenversion
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
			}
		}
	}
	return (reqVer ? false : 0.0);
}
// -->
</script>

<table>

    <tr>
        <td>
<script>
<!--
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) {  // sofern eine akzeptable Version ermittelt wurde
    var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="../flash/oidfertig.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#f8c369" />'
    + '<embed src="../flash/oidfertig.swf" quality="high" bgcolor="#f8c369" width="800" height="300" name="oidfertig" align="middle" play="true" loop="true" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';
    document.write(oeTags);   // Flash-Film einbetten
  } else {  // Flash ist veraltet, oder das Plug-In wurde nicht ermittelt
    var alternateContent = 'Alternativer HTML-Inhalt sollte hier platziert werden.'
  	+ 'Für diesen Inhalt ist der Macromedia Flash Player erforderlich.'
   	+ '<a href="http://www.macromedia.com/go/getflash" />Flash installieren</a>';
    document.write(alternateContent);  // Nicht aus Flash stammenden Inhalt einfügen
  }
// -->
</script>
<noscript>
	// Stellen Sie alternativen Inhalt für Browser bereit,
	// die keine Skriptunterstützung bieten bzw. in denen Skripts deaktiviert wurden.
  	Alternativer HTML-Inhalt sollte hier platziert werden. Für diesen Inhalt ist der Macromedia Flash Player erforderlich.
  	<a href="http://www.macromedia.com/go/getflash/">Flash installieren</a>
</noscript>
         </td>
    </tr>
...
toyde ·

An deiner Stelle würde ich die Scripts erstmal vernünftig auslagern (.js-Datei). Dies ist kein direkter Lösungsansatz, aber wenn Du Extensions und Templates weiter anpasst, bist Du um jede Zeile froh, die ausgelagert wird/ist.

grüsse

edit:
ausserdem dein Doctype wär dennoch interessant aus dem Frontend 😉 .

toyde ·

Dein Frontend-Quellcode, den Du gepostet hast, ist nicht komplett. Genau aber der Doctype und der Headbereich (u.a. inkl der charset-Config) sind für die HTML-Ausgabe von grundlegender Bedeutung.

kilim ·

Hier noch der Doctype plus Charset:

<!DOCTYPE html
	PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<!-- 
	This website is powered by TYPO3 - inspiring people to share!
	TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
	TYPO3 is copyright 1998-2006 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
	Information and contribution at http://typo3.com/ and http://typo3.org/
-->

Ich hoffe, das reicht dir.