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.
<?php // Klasa definiujaca komunikat nad trescia strony function flyMessage(el,msg){ var msgDiv; // Warstwa na komunikat var body; // Zmienna przechowuje body var message; // Wiadomosc var clsName; // Klasa dla warstwy z komunikatem var timeDelay; // Czas w sekundach po ilu ma sie wylaczyc komunikat, -1 nie wylancza sie w ogole var left; // Polozenie warstwy od lewej strony var top; // Polozenie warstwy od gory strony var topOffset; // Przesuniecie warstwy od top var removeElement; var setMessage; var setClassname; var setDelay; var setTop; var setTopOffset; // Ustawienie domyslnych danych dla zmiennych this.clsName = 'flymessagediv'; this.timeDelay = 5; // Tworzenie warstwy w DOM el = document.getElementById('flymessagediv'); if(el) this.msgDiv = el; else this.msgDiv = document.createElement('div'); // Pobieranie body dokumentu this.body = document.body; /* * Funkcje wewnetrzne */ // Funkcja usuwa element o podanym ID z DOM function removeElement(id){ if(!id) return false; var el = getObject(id); if(!el) return false; el.parentNode.removeChild(el); } this.removeElement = removeElement; /* * Funkcje zewnetrzne */ // Funkcja ustawia tresc wiadomosci function setMessage(msg){ this.message = msg; } this.setMessage = setMessage; // Funkcja ustawia clase dla warstwy z komunikatem function setClassName(cls){ this.clsName = cls; } this.setClassName = setClassName; // Funkcja ustawia po jakim czasie (w sekundach) ma sie komunikat zamknac } this.setDelay = setDelay; // Funkcja ustawia polozenie od gory function setTop(top){ this.top = top; } // Funkcja ustawia przesuniecie wzgledem podanego polozenia top function setTopOffset(topoff){ this.topOffset = topoff; } // Funkcja generujaca warstwe function draw2(){ if(!this.message) return false; this.msgDiv.id = 'flymessagediv'; this.msgDiv.className = this.clsName; // Dolnaczanie warstwy z wiadomoscia do body window.document.body.appendChild(this.msgDiv); // Dolanczanie wiadomosci do warstwy this.msgDiv.innerHTML = this.message; // Ustawianie styli dla warstwy z komunikatem this.msgDiv.style.position = 'absolute'; // Wyliczenie potrzebnych danych do pozycjonowania warstwy if(!this.left) if(!this.top) this.top = Math.round((this.body.parentNode.clientHeight / 2) - (this.msgDiv.clientHeight / 2) + (document.documentElement || document.body).scrollTop); if(this.topOffset) this.top += this.topOffset; // Ustawianie styli pozycjonujacych dla warstwy z komunikatem this.msgDiv.style.left = this.left + 'px'; this.msgDiv.style.top = this.top + 'px'; // Wylaczenie warstwy jezeli jest ustawiony czas if(this.timeDelay > 0){ window.clearTimeout(); window.setTimeout("this.removeElement('flymessagediv')",this.timeDelay * 1000); } } this.draw2 = draw2; function draw(){ if(window.attachEvent) { window.attachEvent('onload', this.draw2()); }else{ this.draw2(); } } this.draw = draw; } ?>
Z góry dziękuję za każdą pomoc.
Pozdrawiam.