in html funktioniert es, doch extern nicht (Flashdetection)

online

Erfahrenes Mitglied
Hallo,

ich hab ein Problem, bei dem ich nicht dahinter komm, warum es so ist.

ich wollte gerade ein Flash detection script auf meiner Seite einbauen, dass schaut, ob Flash installiert ist, und dann entweder das Flash oder ein Pic zeigt.

Im Html code eingebaut ist alles kein Problem, wenn Flash installiert ist, wird wirklich das Flash angezeigt, und wenn nicht, dann das Bild.

Doch wenn ich das Script in eine externe JS Datei packe und eine function davor schreibe, funktioniert es nicht mehr.
Dann wird, obwohl Flash installiert ist, das Bild angezeigt.


Hier das Script ohne function:

PHP:
var MM_contentVersion = 6;
							var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
							if ( plugin ) {
									var words = navigator.plugins["Shockwave Flash"].description.split(" ");
									for (var i = 0; i < words.length; ++i)
									{
									if (isNaN(parseInt(words[i])))
									continue;
									var MM_PluginVersion = words[i]; 
									}
								var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
							}
							else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 
							   && (navigator.appVersion.indexOf("Win") != -1)) {
								document.write('<scr' + 'ipt language=VBScript\> \n'); //FS hide this from IE4.5 Mac by splitting the tag
								document.write('on error resume next \n');
								document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
								document.write('</scr' + 'ipt\> \n');
							}
							if ( MM_FlashCanPlay ) {
									document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="150" height="200" />');
								document.write(' <param name="movie" value="flash/begrusung.swf" /> <param name="quality" value="high" /> <param name="menu" value="false" />  '); 
								document.write(' <embed src="flash/begrusung.swf" quality="high" width="150" height="200" NAME="script" TYPE="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
								document.write(' </embed>');
								document.write(' </object>');
							} else{
								document.write('<IMG SRC="image/layout/oben.jpg" WIDTH="300" HEIGHT="200" />');

Hier mit:
PHP:
function detect(){
							var MM_contentVersion = 6;
							var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
							if ( plugin ) {
									var words = navigator.plugins["Shockwave Flash"].description.split(" ");
									for (var i = 0; i < words.length; ++i)
									{
									if (isNaN(parseInt(words[i])))
									continue;
									var MM_PluginVersion = words[i]; 
									}
								var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
							}
							else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 
							   && (navigator.appVersion.indexOf("Win") != -1)) {
								document.write('<scr' + 'ipt language=VBScript\> \n'); //FS hide this from IE4.5 Mac by splitting the tag
								document.write('on error resume next \n');
								document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
								document.write('</scr' + 'ipt\> \n');
							}
							if ( MM_FlashCanPlay ) {
									document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="150" height="200" />');
								document.write(' <param name="movie" value="flash/begrusung.swf" /> <param name="quality" value="high" /> <param name="menu" value="false" />  '); 
								document.write(' <embed src="flash/begrusung.swf" quality="high" width="150" height="200" NAME="script" TYPE="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
								document.write(' </embed>');
								document.write(' </object>');
							} else{
								document.write('<IMG SRC="image/layout/oben.jpg" WIDTH="300" HEIGHT="200" />');
							}
}

Hier mein htmlcode für die Verlinkung:

PHP:
<script>detect()</script>


Kann jemand verstehen, warum das so ist?
Ich versteh es nämlich nicht!

MFG

Online


edit: Das ist aber auch nur im IE so, im Firefox funktioniert alles.
 
Zuletzt bearbeitet:
Hi,

vielleicht mag ich etwas Offtopic sein, aber wäre es nicht viel einfacher, statt ein ewig komplexes Script mit UserAgent und document.write zu basteln, einfach einen 1x1-Pixel großen Flashfilm auf die Seite zu packen, der direkt auf eine andere Seite (mit dem richtigen Flashfilm) weiterleitet? Ist Flash installiert, bekommst Du so den Film zu sehen, ansonsten das Bild (den winzigen Hilfsclip kannst Du ka verstecken).

Gruß
.
 
Na ja, darüber kann man streiten (Die Flashseite kannst Du ja verlinken - ausserdem: was mit JS ins Dokument geschrieben wird, erkennt auch keine Suchmaschine). Ich halte das jedenfalls für besser, als eine JavaScript-Lösung (was ja deaktiviert sein kann).

Gruß
.
 
Bei mir funktioniert das im IE überhaupt nicht, ob nun intern oder extern.
Ich schätze mal, das hängt damit zusammen, dass dort innerhalb des Javascript-Bereichs ein VBScript-Bereich geöffnet wird.... dem Anschein nach werden die dortigen Angaben jedoch weiter als J(ava)Script behandelt... weshalb die angewandte VBScript-Methode nicht funktioniert und die Variable MM_FlashCanPlay nicht erzeugt wird.

Schau mal hier herein... das Skript ist etwas einfacher gestrickt, du müsstest es noch auf die gewünschte Ausgabe hin anpassen.
 
doch, es funtkioniert intern schon im IE, du musst nur das 1. Script nehmen.

Bei mir gibt es da gar keine Probleme.
Das andere Script gefällt mir eher nicht, da ich ein Script benötige, dass entweder ein Flash oder ein Bild postet.

Hoffe, mir kann noch jemand helfen, den Fehler zu erkennen.


MFG

Online


edit: Es ist übrigens JS 1.1 , fals das irgendeinen Unterschied macht.
 
Zuletzt bearbeitet:
Wenn das 1. Skript funktioniert, dann nehm doch das.

Packe es in eine externe JS-Datei und binde es dort, wo das jeweilige Objekt erscheinen soll, wie üblich ein.
 
da liegt eben das Problem, ich wollte daraus eine function machen, damit ich später nur die funktion aufrufen brauch, da liegt aber irgendwie der Fehler.

Kann mir jemand sagen, was ich dabei falsch gemacht habe, ich hab einfach ein "
function detect() { " davor und ein " } " danach hingeschrieben. Ist das falsch?

MFG

Online
 
Du kannst das nicht später Aufrufen.
In dem Skript wird per write() in die Seite geschrieben... wenn du das nicht direkt beim Laden der Seite machst, entschärfst du das ganze Dokument....
 
du meinst das document.write() , oder?

Das sollte aber auch so funktionieren.
Wenn ich das Skript mit:

PHP:
<script scr="flash.js"></script>
Verlinke, funktioniert es ja auch extern, doch ich brauch das als Funktion, doch ich weiß nicht, wo ich da den fehler reingebaut hab.


Danke trotzdem für die Hilfe.

MFG

Online
 
Zurück