SVÆR: kør kode når et element er tilføjet til dokumentet
HejJeg har et script der modificere nogle elementer. Det fungere fint så længe dokumenterne er i DOM-træet fra starten af.
Problemet opstår når der oprettet et element med createElement.
I modificering af elementet indgår nemlig nogle gange ændring width og der funktionen getComputedStyle skal derfor bruges.
Men getComputedStyle kan kun give et brugbart resultat når elementet er tilføjet til dokumentet (ellers kan browseren jo ikke vide hvilke css selectors der gælder).
Jeg har derfor forsøgt mig med at udvide appendChild og insertBefore metoden. Men det virker ikke i FireFox.
Jeg søger derfor også kun en løsning som virker i firefox.
En mulighed er at lave en while-lykke der udvider appendChild på alle elementer uden om prototypen, men det kræver mange resurser.
Man kunne også stille spørgsmålet på en anden måde, "findes der et event som køre når et element bliver tilføjet til dom-træet" eller kan man lave et.
Følgende er den kode som udvider appendChild på prototype niveauet.
<!DOCTYPE html>
<html lang="da">
<head>
<title>AppendChild extend testcase</title>
<meta charset="utf-8">
</head>
<body style="background: red;">
<div id="test"></div>
<script type="text/javascript">
Element.prototype._appendChild = Element.prototype.appendChild;
Element.prototype.appendChild = HTMLDocument.prototype.appendChild = function () {
document.body.style.background = "green";
return this._appendChild.apply(this,arguments);
};
document.getElementById('test').appendChild(document.createTextNode('Default AppendChild function did run'));
</script>
</body>
</html>