NS4, IE4+ och DOM-kompatibla läsare. Dessvärre har de extremt olika modeller för hur man gör... enligt DOM kan man inte stoppa in HTML, men det kan man däremot med den modell som finns i NS4 och IE4. Exempel:
function setLayerText(id, str){
if (document.layers){
with (document.layers[id].document){
open(); // öppna lagret för skrivaccess
write(str); // skriv strängen
close(); // stäng lagret
}
} else if (document.all)
document.all[id].innerHTML = str; // en annan variant vore att skriva innerText = str
else if (document.getElementById){
with (document){
var layer = getElementById(id);
while(layer.hasChildNodes()) layer.removeChild(layer.firstChild);
layer.appendChild(createTextNode(str));
}
}
}
------------------ You can be a coward for a few minutes, or dead forever. /Rincewind
Så det går inte att fixa i Mozilla så man kan stoppa in HTML? Då faller en grej jag håller på med. :l
Och hur gör man i Netscape 4 när man vill läsa från lagret?
Det jag antar att Spango syftar på är metoden createTextNode() och att den skapar just en text-node, men det funkar alldeles utmärkt i mozilla att stoppa in markups med den, och vad jag kan läsa mig fram till är detta meningen, att ev. markups i text-noden skall parse'as och element skapas. Källa.
Nej det stämmer, det var en annan metod jag använt. Mozilla har metoden createContextualFragment()
Prova;
} else if (document.getElementById){
var docrange = document.createRange();
docrange.setStartBefore(document.getElementById(id));
while (document.getElementById(id).hasChildNodes()){
document.getElementById(id).removeChild(document.getElementById(id).lastChild);
}
document.getElementById(id).appendChild(docrange.createContextualFragment(str));
}
Skriva gör det ju rätt mycket enklare, om du tittar på detta exempel, men däremot har jag inget bra tips på motsvarighet till innerHTML som funkar i Netscape 4.