joerghigert: trotz Verweis auf Alternative wollen Browser Plugin laden

Beitrag lesen

Guten Tag allerseits,

ich möchte als erstes darauf verweisen, das ich im Moment erst beginne mich mit JS auseinanderzusetzen, oder mit anderen Worten: Ich bin in Sachen Javascript bzw. Scripting überhaupt ein Dau.

Zum Problem:

Dem Besucher einer Website soll bei Aufruf der Site automatisch eine Animation, in diesem Fall eine kurze Videosequenz, gezeigt werden. Gewählt wurde hierfür das mp4-Format, welches dann mit Hilfe des installierten Quicktime Plugins des Browsers angezeigt werden soll. Für Besucher der Seite, welche kein Quicktime installiert haben, soll die gleiche Animation mit Hilfe von Flash angezeigt werden. Hierfür wird mittels SWF-Container ebenfalls die mp4-Datei auf dem Server genutzt.
Um zu prüfen, ob im Browser des Besuchers Quicktime installiert ist habe ich eine entsprechende Abfrage in die Site integriert:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta name="robots" content="index">
<meta name="robots" content="follow">
<meta name="robots" content="all">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="language" content="de">
<meta http-equiv="content-language" content="de">
<title>Fegefeuer - Dortmund ... der neue Szene-Shop im Pott</title>
<script src="animation2.js" type="text/javascript"></script>

<SCRIPT LANGUAGE="Javascript" type="text/javascript">
var qtvorhanden = false;
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
On Error Resume Next
Set theObject =
CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")
On Error goto 0
If IsObject(theObject) Then
If theObject.IsQuickTimeAvailable(0) Then
qtvorhanden = true
End If
End If
</SCRIPT>

<SCRIPT LANGUAGE="Javascript" type="text/javascript">

if (navigator.plugins) {
for (i=0; i < navigator.plugins.length; i++ ) {
if (navigator.plugins[i].name.indexOf
("QuickTime") >= 0)
{ qtvorhanden = true; }
}
}

if ((navigator.appVersion.indexOf("Mac") > 0)
&& (navigator.appName.substring(0,9) == "Microsoft")
&& (parseInt(navigator.appVersion) < 5) )
{ qtvorhanden = true; }

</SCRIPT>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
body {
background-color: #000000;
}
-->
</style>
</head>
<body>
<p align="center">
<script language="JavaScript" type="text/javascript">
animation();
    </script>
</p>
</body>
</html>

... die eigentliche Funktion habe ich in eine externe Datei mit Namen "animation2.js" ausgelagert:

function animation() {
if (qt_vorhanden = true) {
document.write('<object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="768" height="576">'
+ '<param name="src" value="http://www.ebm-front-ruhr.de/fegefeuer/bilder/coverani.mp4" />'
+ '<param name="autoplay" value="true" />'
+ '<param name="controller" value="false" />'
+ '<param name="cache" value="false" />'
+ '<param name="kioskmode" value="true" />'
+ '<!--[if !IE]> -->'
+ '<object type="video/quicktime" data="http://www.ebm-front-ruhr.de/fegefeuer/bilder/coverani.mp4" width="768" height="576">'
+ '<param name="pluginspage" VALUE="http://quicktime.apple.com/" />'
+ '<param name="autoplay" value="true" />'
+ '<param name="controller" value="false" />'
+ '<param name="kioskmode" value="true" />'
+ '<param name="cache" value="false" />'
+ '</object>'
+ '<!--<![endif]-->'
+ '</object>');
}
else {
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="768" height="576" id="coverani" align="middle">'
+ '<param name="movie" value="http://www.ebm-front-ruhr.de/fegefeuer/bilder/coverani.swf"/>'
+ '<param name="play" value="false" />'
+ '<param name="menu" value="false" />'
+ '<param name="loop" value="false" />'
+ '<param name="allowfullscreen" value="false" />'
+ '<param name="quality" value="high" />'
+ '<!--[if !IE]>-->'
+ '<object type="application/x-shockwave-flash" data="http://www.ebm-front-ruhr.de/fegefeuer/bilder/coverani.swf" width="768" height="576">'
+ '<param name="movie" value="http://www.ebm-front-ruhr.de/fegefeuer/bilder//coverani.swf"/>'
+ '<param name="play" value="false" />'
+ '<param name="menu" value="false" />'
+ '<param name="loop" value="false" />'
+ '<param name="allowfullscreen" value="false" />'
+ '<param name="quality" value="high" />'
+ '<!--[if !IE]>-->'
+ '</object>'
+ '<!--<![endif]-->'
+ '</object>');
}
}

Das Problem ist nun, sofern Quicktime nicht installiert ist versuchen alle getesteten Browser (IE 8, Firefox, Safari) das entsprechende Plugin zu installieren, statt die Animation per Flash anzuzeigen. Ich kann mir nicht erklären warum, denn sofern ich statt den "object.write('xxx'),"-Anweisungen zwei entsprechende Alerts einsetze, wird die jeweilig richtige Meldung auf dem Bildschirm ausgegeben.

Was habe ich falsch gemacht? Kann mir jemand einen Rat geben?

Danke schon mal im Voraus

Jörg

P.S.: den Pfad zur Site auf dem Server findet Ihr im Kopf ...

P.P.S.: Ich würde gerne auch die eigentliche Plugin-Abfrage lieber in die externe Datei auslagern, hab aber keinen blassen Schimmer wie das zu bewerkstelligen ist (Schreibweise in der externen Datei). Kann mir dabei vielleicht jemand helfen?