Hi Yogu,
die Lösung halte ich für unschön
.
Ich hatte es zum Zeitpunkt des Posts so hier umgangen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| addEventDomReady: function(func) { if(document.addEventListener) { document.addEventListener("DOMContentLoaded", func, false); } else { document.onreadystatechange = function() { if(document.readyState == "interactive" || document.readyState == "complete"){ if (document.getElementById('container') != null) { document.onreadystatechange = null; func(); } }else if(document.readyState == "complete"){ func(); } } } }, |
Allerdings ist das auch unschön, denn zum einem wieder Elementabhängig und zum anderem kommt das complete-Event teilweise sehr spät, wenn das interactive fehlschlug.
Yahoo nutzt eine Mischform:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| EU._dri = setInterval(function() { var rs = document . readyState; if ("loaded" == rs || "complete" == rs) { clearInterval(EU . _dri);EU . _dri = null;EU . _ready(); } } , EU . POLL_INTERVAL); |
Finde ich aber auch unschön, da anfangs immer ein Timer mitläuft. Allerdings habe ich an dem Code erkannt, das scheinbar das Problem nur beim auslösen des Events mit incomplete auftritt, jedoch nicht im Zustand incomplete.
Aus diesem Grund habe ich jetzt diesen Code hier, der auch problemlos funktioniert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function addEventDomReady() { document.onreadystatechange = function() { if(document.readyState == "interactive" ){ document.onreadystatechange = null; window.window.setTimeout("MyFunc()", 0); }else if(document.readyState == "complete"){ MyFunc(); } } }
function MyFunc(){ document.getElementById("container").innerHTML = 5; }
addEventDomReady(); |
Trotzdem danke für deinen Tipp
.
Grüße
Heiko