JavaScript Problem

  • Da mir vorhin schon so phantastisch geholfen wurde, hab' ich die Hoffnung auch nochmal eine Antwort / Lösungshinsweis auf folgendes Problem zu bekommen...

    Ich habe auf 'ner HP auch ein kleines Javascript, welches "Dia-Showartig" mehrere jpg nacheinander einblendet. Im IE klappt das wunderbar... beim Firefox tut sich leider nichts.

    Vorhin hatte ich auch schon mal ein JS, bei dem ein findiger User hier nur 2 Zeilen entfernte, und dann ging es. Vielleicht klappt das ja hier auch wieder *hoff*

    Es geht um folgendes Script:

    P.S. Bitte nicth schimpfen, falls die Frage superdämlich o.ä. Ich kenne mich leider noch nicht so gut aus :(


    <script language="JavaScript1.2">
    var agt = navigator.userAgent.toLowerCase();
    var dom = (document.getElementById) ? true : false;
    var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
    var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
    var ns4 = (document.layers && !dom) ? true : false;
    var ie4 = (document.all && !dom) ? true : false;
    var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
    var is_win = ((agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1)) ? true : false;

    var maxImages = 1;
    var maxImages = 2;
    var maxImages = 3;
    var maxImages = 4;
    var activeImage = 1;

    function fnToggle() {

    if (is_win && ie5)
    {
    prvImageContainer.filters[0].Apply();
    document.getElementById("prvImage" + activeImage).style.visibility="hidden";
    if (activeImage == maxImages) activeImage=0;
    activeImage++;
    document.getElementById("prvImage" + activeImage).style.visibility="visible";
    prvImageContainer.filters[0].Play();
    } else {
    document.prvImage.src = img[activeImage].src;
    activeImage++;
    if (activeImage > maxImages) activeImage=1;
    }
    }

    function beginTransitions() {
    timerID = setInterval("fnToggle()", 2500);
    }
    beginTransitions();
    </script>

    <script language="JavaScript">
    if ((is_win) && (ie5))
    {
    document.write('<div id="prvImageContainer" style="position: relative; top: 0px; left: 0px; visibility: visible; width: 376px; height: 500px; filter:blendTrans(duration=2,overlap=1.0)" >');
    document.write('<div id="prvImage1" style="position: absolute; top: 0px; left: 0px; visibility: visible; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-1.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage2" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-2.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage3" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-3.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage4" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-2.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('</div>');
    } else {
    document.write('<img src="/images/startup/schaukel0505-1.jpg" name="prvImage" width="376" height="500" border="0" alt="" />');
    }
    </script>


    .

  • Auf den ersten Blick nichts was generell die Funktionalität im FF unmöglich machen würde. Wahrscheinlich ist es irgendein Problem mit einer Anweisung, ner falsch belegten Variable oder sonst irgendwas in der Art, sowas lässt sich aber bei fremden Scripts nur schwer nachvollziehen (zumal wenn sie unkommeniert sind).

    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

    Eine Theorie sollte so einfach wie möglich sein, aber nicht einfacher. (A. Einstein)

  • Wenn du dich von deiner Lösung trennen magst, könntest du es ja auch einmal mit dem überarbeiteten Skript unter http://ms-office-forum.net/forum/showthread.php?t=161656 ausprobieren.

  • Hallo Dr.evil,

    leider klappt das noch nicht. Wobei ich mir nicht sicher bin, ob ich es richtig gemacht habe... denn diese Bedingung tritt ja zweimal auf:

    einmal "oben" : if (is_win && ie5)

    und einmal "unten": if ((is_win) && (ie5))

    das "untere" kann ich eigentlich nicht wirklich in if(dom) ändern. Jedenfalls meckert dann mein Texteditor.

    Werden wirklich beide Bedingungen 1:1 in "if(dom)" geändert? Mehr nicht, keine weitere Klammer beim 2. oder so?

    Hoffe ich äussere mich wenigstens halbwegs verständlich, bewege mich hier gerade zwichen "Böhmischen Dörfern" :?

  • Ich weiß nicht, was dein Editor da dagegen hat. Damit es erst mal funktionieren kann musst du beide vorkommen (also if ((is_win) && (ie5)) und if (is_win && ie5)) durch if(dom) zu ersetzen. Öffne, wenn es danach immer noch nicht läuft, mal die JavaScript-Konsole (zu finden im Extras-Menü), und sage uns, ob etwas und wenn was beim Aufrufen der Seite drin erscheint.

  • Hallo Dr.,

    also klappt leider unter Mozilla immer noch nicht (unterm IE läuft's nach wie vor... [auch nach der Veränderung mit if (dom)])

    Die Javascript Konsole meldet folgenden Fehler:

    Fehler: prvImageContainer is not defined
    Zeile: 58

  • Hier jetzt nochmal das komplette Script, wie es jetzt ist... und Zeile 58 (so ich meinem Editor trauen kann) hab' ich rot markiert...


    <script language="JavaScript1.2">
    var agt = navigator.userAgent.toLowerCase();
    var dom = (document.getElementById) ? true : false;
    var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
    var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
    var ns4 = (document.layers && !dom) ? true : false;
    var ie4 = (document.all && !dom) ? true : false;
    var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
    var is_win = ((agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1)) ? true : false;

    var maxImages = 1;
    var maxImages = 2;
    var maxImages = 3;
    var maxImages = 4;
    var activeImage = 1;

    function fnToggle() {

    if(dom)
    {
    prvImageContainer.filters[0].Apply();
    document.getElementById("prvImage" + activeImage).style.visibility="hidden";
    if (activeImage == maxImages) activeImage=0;
    activeImage++;
    document.getElementById("prvImage" + activeImage).style.visibility="visible";
    prvImageContainer.filters[0].Play();
    } else {
    document.prvImage.src = img[activeImage].src;
    activeImage++;
    if (activeImage > maxImages) activeImage=1;
    }
    }

    function beginTransitions() {
    timerID = setInterval("fnToggle()", 2500);
    }
    beginTransitions();
    </script>

    <script language="JavaScript">
    if (dom)
    {
    document.write('<div id="prvImageContainer" style="position: relative; top: 0px; left: 0px; visibility: visible; width: 376px; height: 500px; filter:blendTrans(duration=2,overlap=1.0)" >');
    document.write('<div id="prvImage1" style="position: absolute; top: 0px; left: 0px; visibility: visible; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-1.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage2" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-2.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage3" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-3.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('<div id="prvImage4" style="position: absolute; top: 0px; left: 0px; visibility: hidden; width: 376px; height: 500px"><img src="/images/startup/schaukel0505-2.jpg" width="376" height="500" border="0" alt="" /></div>');
    document.write('</div>');
    } else {
    document.write('<img src="/images/startup/schaukel0505-1.jpg" name="prvImage" width="376" height="500" border="0" alt="" />');
    }
    </script>

  • Ich glaube ich weiß was die Konsole dir sagen will. So wie ich es aus dem Script entnehmen kann, hast du im HTML ein div mit der ID prvImageContainer. In der rot markierten Zeile wird nun versucht, die Methode "Apply" des Unterobjektes "filters[0]" anzusprechen. Ich nehme an dass es sich dabei um IE-only-Filter-Spaß handelt. Deswegen macht der FF dort nix weil er damit nichts anfangen kann. Eventuell findest du dazu was auf http://de.selfhtml.org , bin jetz zu faul zum suchen ;)

    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

    Eine Theorie sollte so einfach wie möglich sein, aber nicht einfacher. (A. Einstein)