Läsa från och skriva til lager

JavaScript

9 svar · 305 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Trådstart#1

I vilka webbläsare kan man med JavaScript läsa och skriva till lager med JavaScript?
Med lager menar jag absolut positionerade <div>-taggar.

Och hur skriver man i de olika webbläsarna?

Medlem sedan juni 20008 205 inlägg
#2

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));
}
}
}
Medlem sedan maj 200010 687 inlägg
#3

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?

Medlem sedan juni 20004 308 inlägg
#4

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.

Medlem sedan maj 200010 687 inlägg
#5

Okej, då behöver jag bara en funktion för att läsa från lagret.

Men funkar det att läsa och skriva till lager i en annan frame?

Medlem sedan juni 20008 205 inlägg
#6

Markups som slängs in i createTextNode parsas inte, kan jag berätta...

Medlem sedan juni 20004 308 inlägg
#7

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));
	}
Medlem sedan maj 200010 687 inlägg
#8

Går det att fixa eller blir det enormt krångligt?

Funderade också på om det blir enklare om man vill läsa och skriva till en hel frame..?

Medlem sedan juni 20004 308 inlägg
#9

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.

Medlem sedan maj 200010 687 inlägg
#10

Saken är den att jag vill lägga på en sträng till det som redan finns. Jag vet inte om det går utan att kunna läsa ut vad som redan finns..?

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)