JavaScript Wieso geht das Script in Chrome un IE aber nicht Firefox ?

mercsen

Lt. Commander
Registriert
Apr. 2010
Beiträge
1.679
Hat jemand eine Idee ?
In FF wird nichtmal die seite update.php aufgerufen....
Ziel ist es das man auf ein Feld in einer Tabelle klickt, dann wird anstelle des Inhaltes ein Eingabefeld gezeigt und sobald man woaners hinklickt soll upate.php im hintergrund aufgerufen werden.
Wie gesagt, in Chrome und im Internet Explorer funktioniert es, doch Firefox weigert sich daten an update.php zu senden....
Selbst auf meinem Galaxy S mit Android 2.2 geht es.
Hier das Script, vlt. habt ihr ja eine idee.
Code:
gesetzt = new Array();
function loadMitarbeiterFormular(idTD) {
    if(!gesetzt[idTD]) {
        temp = idTD;
        element = document.getElementById(idTD);
        value = element.innerHTML;
        element.innerHTML = "<input type='TEXT' id = 'instantEditText' value = '" + value + "' onblur='disableMitarbeiterFormular(this, element, temp, value);'>";
        document.getElementById("instantEditText").focus();
        gesetzt[idTD] = true;
    }             
}

function disableMitarbeiterFormular(formular, tableElement, idTD, oldValue) {
    gesetzt[idTD] = false;
    feld = idTD.split("_");
    //tableElement.innerHTML = formular.value;
    str = formular.value;
    if (str.length==0 || feld.length != 2)
    {
        tableElement.innerHTML = oldValue;
        return;
    }
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            tableElement.innerHTML= xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","/module/update.php?s="+str+"&feld="+feld[0]+"&id="+feld[1],true);
    xmlhttp.send();   
}
 
Zuletzt bearbeitet:
Bisher nicht. Hab das ding nur zum testen der Kompatibilität installiert. Aber der Chrome debugger zeigt mir nix an.
Aber ist auch egal da icheh nur Chrome und IE garantiere, falls aber jemand ne idee haben könnte woran es liegt wäe ich dankbar, werd mir die sache morgen aber trotzdem mal in Firebug anschaun.

Vlt. läufts ja auch irgendwann wenn ich es komplett fertig gescrieben habe, derzeit ist das ding ja ziemlich unsicher ^^

Danke erstmal :)
 
Schon mal probiert einfach alle möglichen Fehler aus dem Skript zu entfernen? JSLint

PHP:
gesetzt = [];

function loadMitarbeiterFormular(idTD) {
    if (!gesetzt[idTD]) {
        temp = idTD;
        element = document.getElementById(idTD);
        value = element.innerHTML;
        element.innerHTML = '<input type="text" id="instantEditText" value="' + value + ' onblur="disableMitarbeiterFormular(this, element, temp, value);">';
        document.getElementById("instantEditText").focus();
        gesetzt[idTD] = true;
    }
}

function disableMitarbeiterFormular(formular, tableElement, idTD, oldValue) {
    gesetzt[idTD] = false;
    feld = idTD.split("_");
    //tableElement.innerHTML = formular.value;
    str = formular.value;
    if (str.length === 0 || feld.length != 2) {
        tableElement.innerHTML = oldValue;
        return;
    }
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            tableElement.innerHTML = xmlhttp.responseText;
        }
    };
    xmlhttp.open("GET", "/module/update.php?s=" + str + "&feld=" + feld[0] + "&id=" + feld[1], true);
    xmlhttp.send();
}

Interessant wäre welcher Teil nicht funktioniert, testen ist ja so nicht direkt möglich. Oder hast du auch einen Link zur Seite wo das Skript implementiert ist?
 
Der Fehler ist das xmlhttp.open niemals ausgeführt wird, denn update.php wird niemals geöffnet. Alles andere funktioniert und wie gesagt das ist nur eine vorläufige version um die grundlegenen funktionen (eben das update der DB) zu testen und ich werde sie noch richtg ausbauen. Ich will nur sehen das es so läuft wie ich will und dann bastle ich Fehlerbehandlungen etc. rein ^^
Die ersetzung von " und ' hatte ich btw. auch schon probiert daran lag es nicht ;)
Zeigen könnte ich es nur wenn ich auch online bin da ich derzeit alles auf meinem rechner laufen lasse und ich bin mir nicht sicher in wie weit ich die Sachen zeigen darf da es ein Projekt für einen Kunden ist.
 
Ich habe ehrlich gesagt nicht damit gerechnet, dass irgendeine meiner Änderungen das Problem löst. Trotzdem wollte ich dir zumindest ein aufgeräumtes Skript zur Hand geben. ;)
 
Ja is super, kannte JSLint bisher auch nich da ich eigentlich aus der Java/C abteilung komme.
ALso Danke :)
 
Mercsen schrieb:
Aber ist auch egal da icheh nur Chrome und IE garantiere, falls aber jemand ne idee haben könnte woran es liegt wäe ich dankbar, werd mir die sache morgen aber trotzdem mal in Firebug anschaun.

Eine Kunde der Lauffähigkeit nur für Chrome und IE wünscht, aber nicht für Firefox? Das ist entweder eine ganz spezielle Umgebung oder der Kunde weiß nicht, was das impliziert :)

Schau Dir das auf jeden Fall mit Firebug an, da kannst du dann ja Schritt für Schritt gebuggen.

Ich habe es so verstanden, dass das ganze gerade erst ein quick'n'dirty-Test ist, um Machbarkeit zu beweisen, richtig? Ich empfehle, wenn es ans eingemachte geht, ein JS-Framework wie jQuery oder MooTools zu nutzen. Es macht Deinen Code kürzer, verständlicher und du musst dich nicht um so viele Browsereigenheiten kümmern. Mein Verdacht ist, dass das AJAX beim Firefox etwas anders anzusprechen ist als beim IE/Chrome.
 
Banthor schrieb:
Ich empfehle, wenn es ans eingemachte geht, ein JS-Framework wie jQuery oder MooTools zu nutzen. Es macht Deinen Code kürzer, verständlicher und du musst dich nicht um so viele Browsereigenheiten kümmern.

QFT. Ich selbst arbeite mit jQuery und werde freiwillig nicht mehr darauf verzichten. Zum hobbymäßigen Herumspielen und Lernen ist es sicher nicht notwendig, aber bei der berufsmäßigen Entwicklung wäre es kontraproduktiv, noch "nacktes" Javascript zu schreiben.
 
Zurück
Oben