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.
<?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)
this
.left
= Math
.round((this
.body
.clientWidth
/ 2
) - (this
.msgDiv
.offsetWidth
/ 2
)); 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.
Nowoczesne rozwiązania dla biznesu wtsoft.pl - kreujemy twoją przyszłość.