Witam wszystkich.

Mam problem ze skryptem pod IE, po wykonaniu dostaje komunikat "strona wygasła"

Opis działania skryptu JS:
W skrócie skrypt tworzy warstwę <div> z komunikatem. Warstwę tą dołącza do <body> dokumentu.

Opis błędu:
Po wywołaniu funkcji która dołącza warstwę pod IE dostaję błąd "strona wygasła".

Opis zdarzenia:
Tworze sobie formularz w pliku i ten sam plik go obsługuje. Po przetworzeniu formularza chciałbym użyć właśnie tej funkcji do dodawania warstwy w której chciałbym umieścić odpowiedni komunikat. Jednak napotkałem na taki błąd pod IE. Funkcje wywołuje w kodzie za pomocą <script type="text/javascript>...</script>

Wyczytałem, że może to być wina tego, że body nie jest jeszcze doładowane do końca, dlatego wywołuje funkcję w onload, jednak nie pomaga.
Przesyłam kod całej funkcji.

  1. <?php
  2. // Klasa definiujaca komunikat nad trescia strony
  3. function flyMessage(el,msg){  
  4. var msgDiv; // Warstwa na komunikat
  5. var body; // Zmienna przechowuje body
  6. var message; // Wiadomosc
  7. var clsName; // Klasa dla warstwy z komunikatem
  8. var timeDelay; // Czas w sekundach po ilu ma sie wylaczyc komunikat, -1 nie wylancza sie w ogole
  9. var left; // Polozenie warstwy od lewej strony
  10. var top; // Polozenie warstwy od gory strony
  11. var topOffset; // Przesuniecie warstwy od top
  12.  
  13. var removeElement;
  14. var setMessage;
  15. var setClassname;
  16. var setDelay;
  17. var setTop;
  18. var setTopOffset;
  19.  
  20. // Ustawienie domyslnych danych dla zmiennych
  21. this.clsName  = 'flymessagediv';
  22. this.timeDelay = 5;
  23.  
  24. // Tworzenie warstwy w DOM
  25. el = document.getElementById('flymessagediv');
  26. if(el)
  27. this.msgDiv  = el;
  28. else
  29. this.msgDiv  = document.createElement('div');
  30.  
  31. // Pobieranie body dokumentu
  32. this.body  = document.body;
  33.  
  34. /*
  35.  * Funkcje wewnetrzne
  36.  */
  37. // Funkcja usuwa element o podanym ID z DOM
  38. function removeElement(id){
  39. if(!id)
  40. return false;
  41. var el = getObject(id);
  42. if(!el)
  43. return false;
  44. el.parentNode.removeChild(el);
  45. }
  46. this.removeElement = removeElement;
  47. /*
  48.  * Funkcje zewnetrzne
  49.  */
  50. // Funkcja ustawia tresc wiadomosci
  51. function setMessage(msg){
  52. this.message = msg;
  53. }
  54. this.setMessage = setMessage;
  55. // Funkcja ustawia clase dla warstwy z komunikatem
  56. function setClassName(cls){
  57. this.clsName = cls;
  58. }
  59. this.setClassName = setClassName;
  60. // Funkcja ustawia po jakim czasie (w sekundach) ma sie komunikat zamknac
  61. function setDelay(time){
  62. this.timeDelay = time;
  63. }
  64. this.setDelay = setDelay;
  65. // Funkcja ustawia polozenie od gory
  66. function setTop(top){
  67. this.top = top;
  68. }
  69. // Funkcja ustawia przesuniecie wzgledem podanego polozenia top
  70. function setTopOffset(topoff){
  71. this.topOffset = topoff;
  72. }
  73.  
  74. // Funkcja generujaca warstwe
  75. function draw2(){
  76. if(!this.message)
  77. return false;
  78.  
  79. this.msgDiv.id  = 'flymessagediv';
  80. this.msgDiv.className  = this.clsName;
  81.  
  82. // Dolnaczanie warstwy z wiadomoscia do body
  83. window.document.body.appendChild(this.msgDiv);
  84.  
  85. // Dolanczanie wiadomosci do warstwy
  86. this.msgDiv.innerHTML = this.message;
  87.  
  88. // Ustawianie styli dla warstwy z komunikatem
  89. this.msgDiv.style.position  = 'absolute';
  90.  
  91. // Wyliczenie potrzebnych danych do pozycjonowania warstwy
  92. if(!this.left)
  93. this.left = Math.round((this.body.clientWidth / 2) - (this.msgDiv.offsetWidth / 2));
  94. if(!this.top)
  95. this.top = Math.round((this.body.parentNode.clientHeight / 2) - (this.msgDiv.clientHeight / 2) + (document.documentElement || document.body).scrollTop);
  96. if(this.topOffset)
  97. this.top += this.topOffset;
  98.  
  99. // Ustawianie styli pozycjonujacych dla warstwy z komunikatem
  100. this.msgDiv.style.left = this.left + 'px';
  101. this.msgDiv.style.top = this.top + 'px';
  102.  
  103. // Wylaczenie warstwy jezeli jest ustawiony czas
  104. if(this.timeDelay > 0){
  105. window.clearTimeout();
  106. window.setTimeout("this.removeElement('flymessagediv')",this.timeDelay * 1000);
  107. }
  108. }
  109. this.draw2 = draw2;
  110.  
  111. function draw(){
  112. if(window.attachEvent) {
  113. window.attachEvent('onload', this.draw2());
  114. }else{
  115. this.draw2();
  116. }
  117. }
  118. this.draw = draw;
  119. }
  120. ?>


Z góry dziękuję za każdą pomoc.
Pozdrawiam.