IE und Firefox mit Javascript



  • Danke für die vielen Hinweise. Ich bin neu auf dem Gebiet der Webprogrammierung und meine page ist eigentlich auch in ASP.Net geschrieben. Mit HTML und XHTML habe ich mich so genau noch gar nicht auseinandergesetzt. Sicher ist jedenfalls, dass bei mir, auch wenn ich eure Hinweise einarbeite, sich nichts daran ändert dass er im Firefox den Text kopiert und sobald die Seite dann wieder geladen ist den Text löscht. Im IE passiert das nicht.



  • Hier jetzt noch der Code zu meinem zweiten Problem.

    Die ganze Anwendung ist ein ASP.NET Webprojekt. Dazu habe ich zwei Webseiten, einmal die _Default.aspx, und einmal die popup.aspx. In der Default-Seite ist folgendes definiert:

    protected void Page_Load(object sender, EventArgs e)
            {
                string scr = @"EckigeKlammer script EckigeKlammer //Sorry, wusste nicht wie ich die Klammer maskieren konnte, aber ich hätte den Post sonst nicht abschicken können.
                    function update(elemValue)
                    {
                         document.getElementById('txtMean').innerText=elemValue[0];
                         document.getElementById('txtName').innerText=elemValue[1];
                    }
                    </script>";
                // register the javascript into the Page
                ClientScript.RegisterClientScriptBlock(this.GetType(), "update", scr);
    Button3.Attributes.Add("onclick", "window.open('popup.aspx',null,'left=400, top=100, height=400, width= 400, status=n o, resizable= no, scrollbars= no, toolbar= no,location= no, menubar= no');");
    

    In der popup.aspx steht dieses:

    protected void Page_Load(object sender, EventArgs e)
            {
                string scr = @"<script>
                function Done()
    			{ 
                    var fName=document.getElementById('txtMeanReference').value;	  
                    var lName=document.getElementById('txtNameOfMean').value;	
                    var ret= new Array(fName,lName);
                    window.opener.update(ret);   							 								   
    			    window.close();  
    			}  
    	       </script>;";
    
                ClientScript.RegisterClientScriptBlock(this.GetType(), "done", scr);
                //Page.RegisterClientScriptBlock("done", scr);
    
            }
    

    Der Button mit dem ich die Funktion Done() aufrufe ist hier und befindet sich auf der popup-Seite:

    <Input type="button" name="myButton" value="Save Changes" onclick="Done();"/>
    

    Ich kann über den Button3 das Popup öffnen, ich kann auch schön etwas in die Felder eintragen. Beim IE werden die Daten aus dem popup-Fenster dann schön in die entsprechenden Textboxen in der Default-Seite geschrieben, beim Firefox nicht. Ich habe im Netz jetzt etwas über JScript gefunden. Kann es sein dass mein obiges Beispiel JScript und nicht JavaScript ist und ich deshalb im Firefox die Daten nicht übertragen kann vom Popup auf die Default-Seite? Woran könnte es sonst liegen wenn nicht daran? Wie gesagt, ich bin blutiger Anfänger und habe weder von JScript noch von JavaScript viel Ahnung. Wäre super, wenn mir jemand weiterhelfen könnte.



  • Funzt hier ( document.getElementById('txtMean').innerText ) evtl innerHTML statt innerText ?



  • Nein, innerHTML statt innerText funktioniert nicht, weder bei IE noch bei Firefox



  • Wenn es Textboxen sind, dann solltest du den Wert mit
    document.getElementById('txtMean').value setzten.

    Und nutze die Firefox-Fehlerkonsole. Die sagt dir ja was dem FF nicht passt.





  • Danke für den Tipp. Hab es jetzt geändert, leider funktioniert es immer noch nicht. Die Fehlerkonsole spukt keinen Fehler aus, weder bei meinem ersten Problem dass der Text gleich wieder gelöscht wird aus dem Textfeld noch jetzt beim zweiten Problem. Er schließt das Popup-Fenster zwar, aber er überträgt den Inhalt (trotz ausgebessertem innerText in textContent) nicht.



  • Ich habe mir jetzt mal noch mit alert ausgeben lassen, was in meinen Textboxen steht, nachdem ich die update-Methode aufgerufen habe:

    alert(document.getElementById('txtMean').textContent);
    

    Es steht das drin was er von der popup-Seite übertragen bekommen hat, aber er zeigt es in der Parent-Seite in der Textbox txtMean einfach nicht an. Der Wert ist also richtig und da, er wird aber nicht angezeigt. Woran kann das liegen?



  • Ich habs gelöst! Um im Firefox den Wert einer Textbox zu setzen, heißt die Abrage nicht

    document.getElementById('txtName').textContent=elemValue[1];
    

    sondern

    document.getElementById('txtName').value=elemValue[1];
    

    Um die Daten einem Label zuzuweisen, funktioniert auch textContent. Aber Textboxen werden nochmals anders behandelt.
    Meine Güte, warum kann Firefox nicht mit IE konform laufen?



  • Super gelöst 😉
    Einfacher geht's, wenn du die Antworten auch liest 😉

    Jockelx schrieb:

    Wenn es Textboxen sind, dann solltest du den Wert mit
    document.getElementById('txtMean').value setzten.



  • Oh verdammt, sorry, das habe ich irgendwie total übersehen. Naja, Übung macht den Meister, so habe ich es selbst gefunden 🙂 . Danke trotzdem für deine Hilfe! Hätte mir Zeit gespart!


Anmelden zum Antworten