Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   "Всплывающее" окошко (https://javascript.ru/forum/events/1991-vsplyvayushhee-okoshko.html)

t1gor 16.10.2008 13:36

"Всплывающее" окошко
 
Написал сценарий создания маленького всплывающего окошка. Проверил у себя (FF, Opera, IE, Safari) - все работает. Хотел показать заказчику - он не видит ни в одном из перечисленных.

Посмотреть работу скрипта можно здесь: http://t1gor.ru/test/

Код:

var flag = false; // флаг показывает создано ли окно

function createWindow() { // создает окно если флаг false
if (!flag) {
var body = document.getElementById("body");
var window = document.createElement("div");
window.id = "container";
body.appendChild(window);
formatWindow();
};
flag = true;
}

function formatWindow() { // форматирование созданного окна
var a = document.getElementById("container");
var bar = document.createElement("div");
bar.id = "titleBar";
a.appendChild(bar);
bar.innerHTML += "<img src='title_bar_left.png' alt='' style='position: relative; float: left;' /><span id='title'>Tilte</span><img src='close_button.png' alt='закрыть' id='closeButton' onClick='closeWindow()' />";
a.innerHTML += "<center><img src='110_shl.jpg' alt='110 shl' style='border: solid #000 1px; margin-top: 20px;' /></center>";
a.innerHTML += "<p id='text' align='center' style='margin-bottom: 10px;' >Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. Информация о модели. </p>";
}

function closeWindow() { // уничтожение окна
var node = document.getElementById("container");
var children = node.childNodes;
for (var i=0; i < children.length; ) { var child = children[i]; node.removeChild(child); } // удаление внутренних элементов
var node = document.getElementById("body");
var children = node.childNodes;
for (var i=0; i < children.length; i++) { var child = children[i];
if (child.id == "container") { node.removeChild(child); } // удаление самого контейнера
}
flag = false; // изменения флага для возможности повторного открытия окна
}


Буду рад помощи, если все получится исправить - оплачу консультацию.
Заранее спасибо, Игорь

Zibba 16.10.2008 14:12

Хммм, а у заказчика то JavaScript в браузерах хоть включен? O_o

Андрей Параничев 16.10.2008 14:35

Не загружается картинка 110_shl.jpg, соответственно не над чем сделать mouseover, для открытия окошка. Стили тоже не грузятся.

Zibba 16.10.2008 14:47

Хмм, а у меня в Opera и FF отработало.
При первой загрузке Opera'ой правда не загрузился сам скрипт, после попробовал FF все отработало, запустил еще раз в опере и о чудо тоже отработало.

t1gor 17.10.2008 12:45

Цитата:

Сообщение от Zibba (Сообщение 7158)
Хммм, а у заказчика то JavaScript в браузерах хоть включен? O_o

- да, включен, специально спрашивал.

Видимо проблема в разных версиях браузеров. Если кто-нибудь знает как выровнять, очень прошу помочь. Повторюсь, наверно, но консультацию оплачу

twolf 18.10.2008 11:23

у меня Admuncher рубит. В нем есть фильтр банить
Код:

/test/popup.
и в IE и в FF без мунчера показывается все нормально.
Думаю проблема решится :)

t1gor 18.10.2008 14:21

Спасибо, с окошком вроде разобрался :) теперь возник еще вопрос:

Как корректно для всех браузеров задатт положение и размер этого окна?

var obj = document.getElementById("container");
     obj.style.top = "100px;";
     obj.style.left = "100px;";


Работает только в FF и Opera. Как получить такой же эффект в IE, Safari и NN?

Еще раз заранее спасибо!

Zibba 18.10.2008 14:49

// размеры окна
obj.style.width = "100px";
obj.style.height = "100px";
				
// положение
obj.style.position = "absolute"
obj.style.top = "100px";
obj.style.left = "100px";


Должно работать во всех браузерах, если указываете абсолютное позиционирование, то положение будет задаваться от левого верхнего угла браузера. Если указываете "relative", то положение будет относительно родителя.

t1gor 18.10.2008 15:40

Спасибо, буду пробовать еще :)


Часовой пояс GMT +3, время: 16:51.