Mitglied nicht gefunden - IE Fehler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mitglied nicht gefunden - IE Fehler

    Hallo,

    ich habe folgendes Problem mit Javascript un dem Internet Explorer.

    Also zur Erklärung folgendes:

    Auf einer Seite mit einem Formular, ist ein iframe eingebunden, in welchem ein Formular zum Fileupload ist.
    Wenn ich über das iframe eine Datei anwähle, dann wird diese sofort hochgeladen und über Javascript auf der Parent-Seite ein Listenelement mit dem Namen der Datei erzeugt. Also quasi fast ein bisschen AJax ;-).

    Wie zu erwarten war funktioniert das ganze im Firefox problemlos, nur der IE gibt mir den Fehler "Mitglied nicht gefunden".

    Also zuerst die der Teil der Datei, welche das iframe enthält:

    HTML-Code:
    <TD style="color: white">
    aktivieren: <INPUT type="checkbox" onclick="activcheck('attachmentarea', 'attachmentactiv')" id="attachmentactiv" name="attachmentactiv" value="1">
    <div id="attachmentarea" style="color: white; width: 500px">
    <iframe id="uploadframe" allowtransparency="true" scrolling="no" frameborder="0" style="border: none; width: 500px; height: 50px" src="EG/newsletter/attachment.php"></iframe>
    <ol id="attachmentlist" >
    <?php print showaddedattachments($_SESSION['newsletter']['attachment'])?>
    </ol>
    </div>
    </TD>
    Jetzt das iFrame:
    PHP-Code:
    include('initialisierung.php');
    header('Content-Type: text/html; charset='.$_SESSION['language_charset']);
    header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
    if ($_FILES) {
        if ($_FILES['file']['size'] > 1000000) {
            print "    <script type=\"text/javascript\">\n
                    confirm(\"".SIZE_ALARM_ATTACHMENT."\")
                </script>\n";
        } else {
            move_uploaded_file($_FILES['file']['tmp_name'], DIR_FS_CATALOG."upload/".$_FILES['file']['name']); 
        }
    }
    ?>
    <HEAD>
    <link rel="stylesheet" type="text/css" href="../css/eg_newsletter.css">
    <script type="text/javascript" src="../javascript/ajax.js"></script>
    </HEAD>
    <BODY onload="iFrameHeight()" >
        <form action="attachment.php" enctype="multipart/form-data" method="POST" style="color: #fff">
            <label class="filelabel"><?php echo FILE_UPLOAD_LABEL_ATTACHMENT ?></label>
            <INPUT type="file" name="file" onchange="this.form.submit(); addfile(this.value)" size="20" ><br />
        </form>
    </BODY>
    und zu guterletzt die Javascript Funktion:
    Code:
    function addfile(value) {
    	var i = countLi2() + 1;
    	var base = parent.document.getElementById('attachmentlist');
    	var listenelement = document.createElement("li");
    		listenelement.setAttribute("name", "liste[]");
    		var att_id = document.createAttribute("id");
    			att_id.nodeValue = "aid_"+i;
    			listenelement.setAttributeNode(att_id);
    	
    	var listtext = document.createTextNode(value);
    
    	var rlink = document.createElement("a");
    		var att_href =	document.createAttribute("href");
    			att_href.nodeValue = "javascript:remove2('"+i+"');";
    			rlink.setAttributeNode(att_href);
    		var att_class =	document.createAttribute("class");
    			att_class.nodeValue = "button_large";
    			rlink.setAttributeNode(att_class);
    	var listpoint = base.appendChild(listenelement);
    		listpoint.appendChild(listtext);
    	var tn = listpoint.appendChild(rlink);
    		tn.appendChild(document.createTextNode('Artikel entfernen'));
    }
    Ich habe zu dem Thema immer nur was wegen Style Attributen gelesen, aber ich spreche hier doch gar keine an?

    Ich stehe völlig auf dem Schlauch.

    Vielen Dank für Eure Hilfe.

    Grüsse
    Michael
    Zuletzt geändert von francosdad; 25.07.2009, 15:44. Grund: gelöst

  • #2
    Hallo Michael,

    hast du mal versucht, statt die Attributknoten zu erzeugen, bearbeiten und einzufügen, einfach

    Code:
    deinKnoten.id = deineId;
    deinKnoten.className = deinKlassenName;
    usw. zu benutzen? Im IE und FF mache ich das immer so, das gibt am wenigsten Probleme und ist auch schön kurz.

    Gruß,

    Anja
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo,

      meinst Du etwa so?

      Code:
      var knoten = document.createElementById('attachmentlist');
       knoten.id = "removelink_1",
       knoten.href = "javascript ......";
       knoten.appendTextNode('entfernen');
      ist das der Ansatz oder hab ich es nicht kapiert (bin ein Newbie) ;-)

      Grüsse
      Michael

      Kommentar


      • #4
        Zitat von francosdad Beitrag anzeigen
        Hallo,

        meinst Du etwa so?

        Code:
        var knoten = document.createElementById('attachmentlist');
         knoten.id = "removelink_1",
         knoten.href = "javascript ......";
         knoten.appendTextNode('entfernen');
        ist das der Ansatz oder hab ich es nicht kapiert (bin ein Newbie) ;-)

        Grüsse
        Michael
        Also, ich seh grad noch was:
        Code:
         knoten.id = "removelink_1",
         knoten.href = "javascript ......";
        ist richtig, aber es gibt weder createElementById(id) noch appendTextNode. Entweder meinst du getElementById, um ein existierendes Element (mit id-Attribut) anzusprechen oder createElement(name), um ein neues Element zu erstellen.

        Dein appendTextNode kannst du durch
        Code:
        appendChild(document.createTextNode(text))
        ersetzen.

        Nochmal als Beispiel bezogen auf deinen Code:

        Statt

        Code:
        var rlink = document.createElement("a");
        		var att_href =	document.createAttribute("href");
        			att_href.nodeValue = "javascript:remove2('"+i+"');";
        			rlink.setAttributeNode(att_href);
        		var att_class =	document.createAttribute("class");
        			att_class.nodeValue = "button_large";
        			rlink.setAttributeNode(att_class);
        kannst du
        Code:
        var rlink = document.createElement("a");
        rlink.href = "javascript:remove2('" + i + "');";
        rlink.className = "button_large";
        schreiben. Andererseits wäre es besser, wenn du dich mit Events auseinandersetzt und diese href javascript:... Krücke z. B. durch einen onclick Event Handler ersetzt.
        Zuletzt geändert von AmicaNoctis; 24.07.2009, 19:36.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          lso, ich seh grad noch was:
          Code:

          knoten.id = "removelink_1",
          knoten.href = "javascript ......";

          ist richtig, aber es gibt weder createElementById(id) noch appendTextNode. Entweder meinst du getElementById, um ein existierendes Element (mit id-Attribut) anzusprechen oder createElement(name), um ein neues Element zu erstellen.

          Dein appendTextNode kannst du durch
          Code:

          appendChild(document.createTextNode(text))

          ersetzen.
          Sorry, hab mich verschrieben. Ich wollte nur dringend aus dem Büro.

          Den Rest kann ich nachvollziehen, das mit dem Eventhandler ist auch verständlich, statt href; aber den href tag muss ich doch beim a Tag trotzdem setzen, oder?

          Ansonsten erstmal vielen Dank.

          Grüsse
          Michael

          Kommentar


          • #6
            Du kannst (fast) jedes beliebige Element mit einem onclick-Handler benutzen, es muss nicht a sein. Wenn du trotzdem a benutzen willst und es außer dem onclick keinen echten Verweis enthalten soll, kannst du das href-Attribut (nicht "Tag") auf "#" setzen.

            Gruß,

            Anja
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              Du kannst (fast) jedes beliebige Element mit einem onclick-Handler benutzen, es muss nicht a sein.
              Empfiehlt sich aber (oder ein anderes, per Default fokussierbares Element zu nehmen) - weil man dann keine Extrawürste braten muss, um das ganze auch per Tastatur bedienbar zu halten. (Vergabe eines tabIndex-Wertes per JS wäre eine der möglichen "Extrawürste".)

              Wenn du trotzdem a benutzen willst und es außer dem onclick keinen echten Verweis enthalten soll, kannst du das href-Attribut (nicht "Tag") auf "#" setzen.
              Ja, in Fällen, wo es keinen non-JS-Fallback gibt; sonst sollte dort natürlich die Adresse der Seite stehen, die diesen bereitstellt.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                So, ich habe mein Javascript überarbeitet und wer glaubts; der Internet Explorer macht unbeeindruckt NICHTS! -> Firefox machts so wie es sein soll.

                Code:
                function addfile(value) {
                	var i = countLi2() + 1;
                	var base = parent.document.getElementById('attachmentlist');
                
                	var listenelement = document.createElement("li");
                		listenelement.id = "aid_"+i;
                		listenelement.name = "liste[]";
                
                	var rlink = document.createElement("a");
                		rlink.href = "#";
                		rlink.className = "button_large";
                		rlink.onclick = "javascript:remove2('"+i+"')";
                		rlink.appendChild(document.createTextNode('Artikel entfernen'));
                
                	var listtext = document.createTextNode(value);
                
                 	var inputelement = document.createElement("input");
                		inputelement.type = "hidden";
                		inputelement.value = value;
                		inputelement.name = "attachment[]";
                
                	var listpoint = base.appendChild(listenelement);
                		
                		listpoint.appendChild(listtext);
                		listpoint.appendChild(inpuelement);
                		listpoint.appendChild(rlink);
                }
                Ich werde verrückt, muss den der IE bei allem eine Extrawurst spielen?

                Ich habe so das Gefühl, dass der IE mit dem parent. Probleme hat?! -> parent.document.getElementById('attachmentlist');

                Grüsse
                Michael
                Zuletzt geändert von francosdad; 25.07.2009, 15:13.

                Kommentar


                • #9
                  Du versucht, Elemente in ein Dokument einzuhängen, die in einem anderen Dokument erzeugt wurden - das ist eigentlich nicht erlaubt, die müssten erst mal mittels importNode ins jeweilige Dokument importiert werden. (M.E. ein Fehler, wenn andere Browser das kommentarlos schlucken.)

                  Erzeuge also die Elemente "in" dem Dokument, in welchem du sie auch einfügen willst - parent.document.createElement(...)
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Code:
                    function addfile(value) {
                    	var i = countLi2() + 1;
                    	var base = parent.document.getElementById('attachmentlist');
                    
                    	var listenelement = parent.document.createElement("li");
                    		listenelement.id = "aid_"+i;
                    		listenelement.name = "liste[]";
                    
                    	var rlink = parent.document.createElement("a");
                    		rlink.href = "javascript:remove2('"+i+"')";
                    		rlink.className = "button_large";
                    		rlink.appendChild(document.createTextNode('Artikel entfernen'));
                    
                    	var listtext = parent.document.createTextNode(value);
                    
                    	var inputelement = parent.document.createElement("input");
                    		inputelement.type = "hidden";
                    		inputelement.value = value;
                    		inputelement.name = "attachment[]";
                    
                    	var listpoint = base.appendChild(listenelement);
                    
                    		listpoint.appendChild(rlink);
                    		listpoint.appendChild(listtext);
                    		listpoint.appendChild(inputelement);
                    }
                    Auf diese Art?

                    Mit dieser Zeile habe ich doch eingentlich das Parentfenster angesprochen oder?: var base = parent.document.getElementById('attachmentlist');

                    Wenn ich parent vor jedes create setze gehts auch nicht; ausser natürlich im Firefox.

                    Interessiert den IE auch nicht, der sagt nach wie vor: Mitglied nicht gefunden!

                    Ich google auch schon wie ein verrückter, aber ich finde nichts.

                    Grüsse
                    Michael

                    Kommentar


                    • #11
                      Beim Textknoten hast du's noch vergessen, diesen auch im Zieldokument zu erzeugen.

                      Wenn's dann immer noch nicht will - ist das jetzt alles an Code?
                      Wo genau tritt der Fehler auf?
                      Beispielseite?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Habe gerade parent. noch an den Textknoten gefügt und es GEHT



                        Das wird heute abend:

                        Danke und Ciao.
                        Michael

                        Kommentar

                        Lädt...
                        X