Ergebnis 1 bis 7 von 7

Thema: Javascript IE6

  1. #1
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Javascript IE6

    Guten Abend.

    Ich komm ums verecken nicht drauf, was hier geschieht.
    Bei diesem Script (eigentlich nix aufregendes) schmeisst mir der IE6 die Fehlermeldung
    Objekt erwartet
    um die Ohren.

    Die Zeilennummer variiert zwischen 46-49, was an sich ja auch nicht wirklich hilft, da die IE-Konsole meist falsche Zeilennummern auswirft.

    Hier das Script:
    Code:
    var menuFile = "/fileadmin/template/php/ajaxmenu.php";
    var class = "ajaxmenu";
    var listFile = "/fileadmin/template/php/liste.php";
    var entryFile = "/fileadmin/template/php/entry.php";
    var menuDiv = "checkboxen";
    var contentDiv = "mitte";
    
    function initRequest() {
        var req = null;
        try {
            //alert("Try 1");
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(Error) {
            try {
                //alert("Try 2");
                req = new ActiveXObject("MSXML2.XMLHTTP");
            }
            catch(Error) {
                try {
                    //alert("Try 3");
                    req = new XMLHttpRequest();
                }
                catch(Error) {
                    alert("Kein Request-Objekt gebildet");
                } 
            }
        }
        return req;
    }
    
    function showMenu() {
        if (typeof($(menuDiv).innerHTML) == "undefined")
        {
            var req = initRequest();
            req.open("get", menuFile, true);
            req.onreadystatechange = function() {
                                        if (req.readyState == 4 && req.status == 200)
                                        {
                                            $(menuDiv).innerHTML = req.responseText;
                                            new Effect.BlindDown($(menuDiv), 
                                            {duration:3});
                                        }    
                                     };
            req.send(null);
        }
    }
    
    function getChecked() {
    
        var ajaxmenu = document.getElementsByClassName(class);
        var checked = new Array();
        for (var i = 0; i < ajaxmenu.length; i++)
        {
            var inputs = ajaxmenu[i].getElementsByClassName("checkbox");
            for (var j in inputs)
            {
                if (inputs[j].checked)
                    checked.push(inputs[j].value);
            }
        }
        return checked;
    }
    
    function showFilteredList() {
        if (arguments.length > 0)
        {
            var seite = arguments[0];
        }
        else
        {
            var seite = 1;
        }
        var checked = getChecked();
        var req = initRequest();
    
        req.open("get", listFile+"?ids="+checked.toString()+"&seite="+seite, "true");
        req.onreadystatechange = function() {
                                    if (req.readyState == 4 && req.status == 200)
                                    {
                                        $(contentDiv).innerHTML = req.responseText;
                                    }
                                };
        req.send(null);
                                
    }
    
    function showFullEntry(id) {
        var req = initRequest();
        req.open("get", entryFile+"?id="+id, "true");
        req.onreadystatechange = function() {
                                    if (req.readyState == 4 && req.status == 200)
                                    {
                                        $(contentDiv).innerHTML = req.responseText;
                                    }
                                };
        req.send(null);
    }
    Generell versuche ich per Mouseover die Funktion showMenu() aufzurufen.
    In dem Moment pfeifts im Browser

    Das ganze läuft auf einer Typo3 Installation, nutzt das Framework aber nicht sondern läuft quasi "nebenher".
    Firefox und Opera funktionieren.

    In der Hoffnung auf zündende Ideen, müde,
    Jojo
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    Moin.

    Ich denke, dass der IE bei der ersten Zeile rausgeht. Probier mal statt der typeof() Zeile nur mal so: if ($(menuDiv).innerHTML == "")

    Wenns nicht das ist, schmeiss mal alles aus der Funktion raus und setz es Stück für Stück wieder ein, dann findest du schnell den Fehler.

    Übrigens: mit $(menuDiv) machst du im Prinzip jedes mal ein document.getElementById(menuDiv) - also suchst jedes mal wenn du auf das Element zugreifst den ganzen DOM ab (ausser das JS Framework cached das Element, was ich aber bezweifle). Das ist ein Fehler, was sich bei grösserem Codeumfang schnell auf die Performance auswirkt. Setz Elemente, die du mehrmals brauchst, nur einmal:

    Code:
    var menuDiv = $('menu_id');

  3. #3
    der/die Göttliche
    Themenstarter
    Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    danke für deine Antwort.

    Leider hat das keinen Erfolg gebracht.
    Habe die Zeile durch
    Code:
    if(!$(menuDiv).hasChildNodes())
    ersetzt (was besser funktioniert in meinem Fall), aber auch das klappt nicht.

    Zudem habe ich an den Anfang des Scripts mal ein alert() rein gesetzt, gleich in die erste Zeile vor den Variableninitiationen, und nichts tut sich!

    Die Wirkung der $() Funktion war mir bewusst. Ich nutze das in dem Script glaube ich 4-5 mal, das kann ich verschmerzen

    Jemand noch eine Idee?

  4. #4
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    Poste bitte mal den ganzen code als HTML Datei - dann seh ich mir das an.

    Zum $():
    Es ist nicht nur schneller, du schreibst auch weniger Code und dein Code bleibt wartbarer. Warum du dich bewusst für eine schlechtere Variante entscheidest kann ich mir nicht erklären Ausserdem: wenn du dir jetzt einen sauberen Code Stil angewöhnst, wird sich das mal auszahlen wenn du JS Projekte schreibst mit einigen tausend Zeilen Code. Dann machen solche Sachen halt einen Unterschied.

  5. #5
    der/die Göttliche
    Themenstarter
    Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    Danke für das Angebot.
    Die Dateien sind als .zip im Anhang.
    Habe inzwischen testweise den Einblendeffekt rausgenommen, was aber auch nichts geholfen hat.
    Eine php-datei, um den Ajax-Aufruf zu simulieren, habe ich mit reingepackt.
    Angehängte Dateien Angehängte Dateien

  6. #6
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    Das Problem war die Variable "class". Hab sie überall umbenannt und der Fehler ist weg.

    Persönlicher Tipp: ich würde das Menü-aufklappen onclick machen, nicht onhover. Nervt irgendwie so.
    Tipp2: für solche Sachen (Menü nachladen) eignet sich AJAX nur bedingt. Die Menüpunkte bleiben ja gleich. AJAX verwendet man am besten um verändernde Daten nachzuladen. Für gleichbleibende Daten ist es keine Schande das Menü zb. beim Seitenaufruf einfach in ne Javascript Variable zu packen und die zu verwenden. AJAX ist cool - sollte aber sinnvoll verwendet werden.
    Geändert von phore (03.07.2009 um 12:17 Uhr)

  7. #7
    der/die Göttliche
    Themenstarter
    Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Javascript IE6

    du bist ein Schatz.
    Natürlich war es das
    Ist ja auch ein reservierter Name in IE's Javascript-Implementation.
    Der Wald....vor Bäumen...und so...

    Danke dir vielmals

    EDIT:// werde mir deinen Hinweis wegen der $()-Funktion zu Herzen nehmen. Hast damit natürlich recht.
    Das mit dem mouseover habe ich ebenfalls schon zur Sprache gebracht, ist aber so gewünscht, was soll ich machen.
    Die Checkboxen kommen letztendlich aus einer Datenbank, von daher kann ich da auf Ajax nicht verzichten
    Geändert von jojo87 (03.07.2009 um 12:15 Uhr)

Ähnliche Themen

  1. Javascript
    Von haillo im Forum Job Forum - Jobs für Grafiker, Programmierer und Webmaster
    Antworten: 5
    Letzter Beitrag: 19.08.2008, 23:03
  2. Javascript in Javascript importiere
    Von FaFoo im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 08.04.2008, 19:24
  3. JavaScript mit css
    Von Oeli im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 12.06.2006, 19:00
  4. Ie/javascript
    Von Hook im Forum HTML & CSS Forum
    Antworten: 0
    Letzter Beitrag: 28.08.2005, 22:23
  5. Thema: JavaScript -- Variable einfügen JavaScript o. Bild
    Von Dj_P.D. im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 29.06.2004, 16:14

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •