zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden innerHTML und der IE

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 13.10.2008, 15:00
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard innerHTML und der IE

Servus,

ich hänge mal wieder fest ...

Problem:

Code:
document.getElementById( id).innerHTML = "<b>Hallo</b>";
funktioniert im IE so wie es soll (natürlich auch im FF).

Code:
document.getElementById( id).innerHTML = "<p>Hallo</p>";
erzeugt im IE eine Meldung: "Unbekannter Laufzeitfehler". Ich habe den Eindruck,
der IE verschluckt sich nur an Blockelementen, Inlineelemente macht er.

Kann das sein ?
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 13.10.2008, 15:56
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Merkwürdigerweise macht der IE es mit outerHTML (Logik steh' mir bei).
Allerdings ignoriert er das CSS, JS-Funktionsaufrufe werden ausgeführt.

Jetzt wird mir klar warum das Teil "Fenster Entdecker" heißt
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 13.10.2008, 19:42
Benutzerbild von Curtains
(Schlafen||Programmieren)
XHTMLforum-Mitglied
 
Registriert seit: 27.08.2008
Beiträge: 198
Curtains befindet sich auf einem aufstrebenden Ast
Standard

Hallo Scheppertreiber,

innerHTML ist nicht DOM Standard und hat gewisse Tücken
Zum Beispiel treten im IE Probleme mit table.innerHTML auf, da die Eigenschaften der Elemente TABLE, TFOOT, THEAD und TR schreibgeschützt sind.
Mit Zitat antworten
  #4 (permalink)  
Alt 13.10.2008, 19:49
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Servus,

das habe ich auch gemerkt *grrrr*. Warum muß dieser IE immer wieder ...

Ich habe es jetzt nach längerer Recherche so hinbekommen:

Code:
       
        function SetElementContent( tag, content) {
              if ( document.all) {
                  document.getElementById("avawrp").innerHTML = '';
                  var ptr = document.getElementById("avawrp");
                  var myp = document.createElement( "span");
                  var chi = ptr.appendChild( myp);
                  chi.innerHTML = content;
              } else {
                  // der gute liebe nette Browser ....
                  document.getElementById(tag).innerHTML = content;
              }
        }
Es funktioniert zumindest mal. Jetzt noch ewas Feinarbeit ...
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #5 (permalink)  
Alt 14.10.2008, 14:36
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Irgendwie ist das Problem nicht klar.

Du musst im IE nur etwas mehr aufpassen, dass du mit innerHTML einen gültigen Code erzeugst und dass du Tabellen nicht einfach so verändern kannst, es ist allerdings in deinen Beispielen nirgendwo eine Tabelle zu entdecken und ein p-Element kann auch der IE erzeugen und einhängen per innerHTML.

Dein workaround erzeugt ungültigen Code (ein p in einem span ist ungültig), was den Browser zwar nichts ausmacht, aber ob das so bleibt und ob es andere unerwünschte Effekte gibt läßt sich natürlich nicht sagen.
Mit Zitat antworten
  #6 (permalink)  
Alt 14.10.2008, 14:43
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Ich weiß, daß das Pfusch ist. Mir ist das Problem auch nicht klar sonst wäre es gelöst *grrr*

Danke für die Tips. Sobald ich ein p einklinke tut sich nichts mehr. Mit Span
geht das in IE 6+7. Frag mich nicht warum
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #7 (permalink)  
Alt 14.10.2008, 14:57
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Also im IE 7 geht das ohne Probleme:
HTML-Code:
<div id="out"></div>
<script type="text/javascript">
window.onload = function() {
var out = document.getElementById('out');
out.innerHTML = '<p>Geht nicht?</p>';

}
</script>
Mit Zitat antworten
  #8 (permalink)  
Alt 14.10.2008, 15:01
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Ich bekomme das per HTTP-Request und lagere das dann an seinen Platz ein.
Ich gehe nachher nochmalö drüber. Irgendwo muß noch ein Fehler stecken.
Der Request ist Reaktion auf einen Klick.
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #9 (permalink)  
Alt 20.10.2008, 11:43
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 27.06.2006
Beiträge: 134
cybaer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Curtains Beitrag anzeigen
innerHTML ist nicht DOM Standard und hat gewisse Tücken
Es ist allerdings dabei, standardisiert zu werden - und wird auch jetzt bereits von jedem DOM-Browser unterstützt.

Tücken hat es IMHO keine, zumindest wenn man die Doku des Erfinders bemüht. Denn ...

Zitat:
Zum Beispiel treten im IE Probleme mit table.innerHTML auf, da die Eigenschaften der Elemente TABLE, TFOOT, THEAD und TR schreibgeschützt sind.
... der Erfinder ist MS, der IE ist also mithin "Referenz". Und welche Elemente man nicht beschreiben kann, steht seit Jahr und Tag in der Doku bei MSDN.
__________________
Gruß, Cybaer
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 20.10.2008, 11:54
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 27.06.2006
Beiträge: 134
cybaer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Scheppertreiber Beitrag anzeigen
Warum muß dieser IE immer wieder ...
Ohne IE gäbe es gar kein innerHTML!

Zitat:
Ich habe es jetzt nach längerer Recherche so hinbekommen:
Dennoch: document.all ist nach wie vor keine geeignete Browserabfrage!!!!11!!1elf!

Wenn man IE vom Rest unterscheiden will, kann man Conditional Compilation bemühen.

Aber wozu? Alle DOM-Browser verstehen innerHTML, und wenn man mit DOM-Methoden arbeiten muß, weil man innerHTML entgegen der Doku einsetzen möchte: Der IE versteht ab 5.x inkl. auch das.

Und den IE 4 berücksichtigst Du doch wohl nicht mehr, oder? Die anderen Uralt-Browser läßt Du ja auch ohne Abfrage ins Messer laufen ...

Und was das konkrete Problem angeht: P ist ein Blockelement. Und als solches darf es nicht in einem Inline-Element stehen. Punkt. Der Code ist einfach falsch

(Und anders als DIV, darf P selbst sogar ebenfalls kein Blockelement enthalten.)

Was ginge: Blockelement in ein Blockelement schreiben (also: DIV), und das äußere dann via CSS als Inlineelement darstellen (display:inline)!
__________________
Gruß, Cybaer
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
innerHTML Rico Javascript & Ajax 10 23.09.2010 14:30
Über Methode mit innerHTML Div verändern (funktioniert nicht) 1chris CSS 6 28.03.2010 16:09
Über Methode mit innerHTML Div verändern (funktioniert nicht) 1chris Javascript & Ajax 2 26.03.2010 21:59
mit innerHTML auf <head> Tag zugreifen. IE Problem. naitsab Javascript & Ajax 4 22.06.2009 19:40
innerHTML Änderung, DOM Kurtk Javascript & Ajax 7 11.11.2007 21:26


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:26 Uhr.