messager. Сообщение в центре веб-странички.

Скрипты, разработка, настройка, администрирование

Модераторы: dobs, ArniXXX, hostess, bj

Сообщение
Автор
baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

messager. Сообщение в центре веб-странички.

#1 Сообщение baytuch » Чт июн 03, 2010 21:29

Вобщем, хочу написать небольшой скриптец, для своего сервера, который бы сообщал пользователю о возможной паузе при ожидании ответа. Например, я отсылаю почту, использую SMTP - сервер компании "Киевстар", который предоставляется для мобильных пользователей. Времмя отправки сообщения около 40 секунд. Ну, представте, зашли Вы на сайт, отправляете почту, а сервер долго не отвечает... Как и решил: нужна небольшаю програмка, которая бы сообщала пользователю о возможном ожидании. Например, такой вариант: пользователь отправляет почту. Нетерпеливо ждет)))... Ну, и, скажим, секунд через десять, ему в центре экрана высвечивается сообщение "пожалуйста подождите - обработка запроса". Тем самым сообщая пользователя о том, что процесс продолжается, но нужно немножко подождать. Вот...
Короче, полный ажур, но не могу вычислить разрешение рабочей области браузера... Точнее, не знаю как... Использовал для этой цели:
var x=screen.width
var y=screen.hight
Но, результатом этого свойства есть фактически рачим работы видеокарты, что не совсем подходит...

Вот примерный ( черновой ) вариант самого скрипта:

var i=0;
var mas="Обработка запроса - пожалуйста подождите";
var x=200;
var y=200;
var x_org=screen.width;
var y_org=screen.height;
var x=x_org/2-200;
var y=y_org/2-10;

function a(){
document.all.td.innerHTML=mas+"."
};
function b(){
document.all.td.innerHTML=mas+".."
};
function c(){
document.all.td.innerHTML=mas+"..."
};

function massage(){
i++
if (i>=3) { i=0 };
if ( i==0 ) { a() };
if ( i==1 ) { b() };
if ( i==2 ) { c() };
document.all.td.style.backgroundColor="#CCAAAA";
}

window.setTimeout("window.setInterval('massage()',500)",10000);

document.all.info.style.left=x;
document.all.info.style.top=y;

Вобщем, вопрос пока один: как узнать разрешение рабочей зоны браузера? Подскажите пожалуйста?..
На метод window.setTimeout особо не обращайте внимание. Использовал для примера...
Последний раз редактировалось baytuch Ср июн 22, 2011 14:14, всего редактировалось 2 раза.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

dobs
HO Moderators
Сообщения: 2504
Зарегистрирован: Вс апр 09, 2006 14:42
Откуда: /home/Ukraine/Kyiv
Контактная информация:

#2 Сообщение dobs » Пт июн 04, 2010 00:04

А не проще дивом сделать с абсолютным позиционированием?

bj
HO Moderators
Сообщения: 1445
Зарегистрирован: Вт фев 13, 2007 13:18
Контактная информация:

#3 Сообщение bj » Пт июн 04, 2010 09:17

Можно так попробовать, но я основательно не тестил этот код в разных браузерах. Во всяком случае в Мозилле работает

Код: Выделить всё

<script type="text/javascript">
//IE5+, Mozilla 1.0+, Opera 7+

function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}

</script>
P.S. Наверное проще сделать таблицу с одной ячейкой растянуть ее на 100% во все стороны и затем поместить сообщение в центре этой ячейки (align=center valign=middle) обо всем остальном позаботится браузер
В жизни не все так просто, а гораздо проще

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#4 Сообщение baytuch » Пт июн 04, 2010 10:57

Ok... Получил значение...

Имеется мысл сделать так, чтоб сообщение появлялось поверх страницы, то есть фрагмент кода, сделаный в табличке, например, с абсолютным позиционированием с помощью JavaScript...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#5 Сообщение baytuch » Пт июн 04, 2010 17:26

Попытался оптимизировать. Вот что получилось:

JavaScript:

var mas="Обработка запроса - пожалуйста подождите";
var i=0;
var x_client=document.body.clientWidth;
var y_client=document.body.clientHeight;
var x=x_client/2-175;
var y=y_client/2-10;

function a(){
document.all.td.innerHTML=mas+"."
};
function b(){
document.all.td.innerHTML=mas+".."
};
function c(){
document.all.td.innerHTML=mas+"..."
};
function massage(){
i++;
if (i>=3) { i=0 };
if ( i==0 ) { a() };
if ( i==1 ) { b() };
if ( i==2 ) { c() };
}
function start(){
document.all.mas.style.left=x;
document.all.mas.style.top=y;
document.all.td.style.backgroundColor="#CCDDAA";
window.setInterval('massage()',500);
}

window.setTimeout("start()",10000);

html:

<table width="350" class="mas" id="mas">
<tr>
<td id="td" class="td">
</td>
</tr>
</table>

CSS:

.mas{
position:
absolute;
top: 0;
left: 0;
}

.td{
background-color: #FFFFFF;
}

Только еще не знаю, как сделать бардюрчик с помощью JavaScript... ( Так как нет такого у меня в учебнике ). Пропробую пошуршать в гугле...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

ArniXXX
HO Moderators
Сообщения: 420
Зарегистрирован: Сб янв 19, 2008 16:02
Контактная информация:

#6 Сообщение ArniXXX » Пт июн 04, 2010 19:32

Я так понимаю речь идет об отправке формы на AJAX?

Если да то не вижу смысла все так усложнять.

1. Подключаем плагин JQuery http://jquery.com/
2. Подключаем плагин http://jquery.malsup.com/form/

Кстати файлы тоже сабмитит.

3. Где там наш my.js пишем

Код: Выделить всё

$("#myid").ajaxForm({ 
  success: function(msg){
	if(parseInt(msg)!=0)
  	{
       	// Ответ получен	   
               }
 beforeSubmit: function(msg){
	if(parseInt(msg)!=0)
  	{
       	// Блок будет запущен перед отправкой  
               }
}
 });
Собственно я не против писать все JS на каждый случай самому, но просто у меня лично это не раз уже вызывало сбои. Потому склонен использовать JQuery

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#7 Сообщение baytuch » Пт июн 04, 2010 20:11

А что вы имеете ввиду под "усложнять"?.. Тут до AJAX'a, как до неба... Опять перемудрил... Попробую еще упростить, например, собрать несколько пользовательских функций во едино... А то как то громоздко смотритца. Хотя, зато так легче модифицировать... :roll:

ArniXXX, за библиотеку спасибо... Хотя, мне кажется, оно у меня уже есть. Просто, не дошел туда еще...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

ArniXXX
HO Moderators
Сообщения: 420
Зарегистрирован: Сб янв 19, 2008 16:02
Контактная информация:

#8 Сообщение ArniXXX » Пт июн 04, 2010 21:24

baytuch писал(а):А что вы имеете ввиду под "усложнять"?..
Усложнять в том плане что єти и многие другие задачи уже решены в таких иблиотеках как JQuery. Там все в ООП, шансов обозвать свою переменную одинаково с системной и потом чухаться день нету. Да и вобще кросбраузерность дикая штука, а об этом разработчики тоже позаботились. Вот собственно о чем я ...

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#9 Сообщение baytuch » Пт июн 04, 2010 23:08

Да... С переменной - жесть...
А я префиксы добавляю. Ну, типа mas_x, mas_y... А вообще, Вы правы... Хотя так хочеться написать что-то свое... С нуля... Аж клава чешится... Пока копаюсь в фюжине... Этот скриптик для него, собственно... По повуду кросбраузерности, могу сказать, что меня эта вещь дико бесит, неужели невозможно придерживаться одного стандарта. Бардак какой-то... Стараюсь нечего не мудрить и сисать просто...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#10 Сообщение baytuch » Ср июн 09, 2010 03:57

Все... Доработал скриптик... Больше, методом "научнгого тыка" так как так и не нашел документально, как воздействоывть на ширирну рамки с JavaScript'а... Но, я обратил внимание, что большенство "переменных" имею схожие написание с CSS... То есть ширина рамки
border-width: 1 , например.

Почему-то, не удается изменить значение параметра, не указав, придваритель, его значение в CSS... На этом и застрял...

Скрипт :
var mas="Обработка запроса - пожалуйста подождите";
var i=0;
var x_client=document.body.clientWidth;
var y_client=document.body.clientHeight;
var x=x_client/2-175;
var y=y_client/2-10;

function a(){
document.all.td.innerHTML=mas+"."
};
function b(){
document.all.td.innerHTML=mas+".."
};
function c(){
document.all.td.innerHTML=mas+"..."
};
function massage(){
i++;
if (i>=3) { i=0 };
if ( i==0 ) { a() };
if ( i==1 ) { b() };
if ( i==2 ) { c() };
}
function start(){
document.all.mas.style.left=x;
document.all.mas.style.top=y;
document.all.td.style.backgroundColor="#CCDDAA";
document.all.mas.style.borderColor="black";
document.all.mas.style.borderWidth="1";
window.setInterval('massage()',500);
}

window.setTimeout("start()",10000);

CSS:
.mas{
position:
absolute;
top: 0;
left: 0;
border-color: #000000;
border-width: 0;

}

.td{
background-color: #FFFFFF;
}

html:
<table width="350" class="mas" id="mas" border="1">
<tr>
<td id="td" class="td">
</td>
</tr>
<table>

Пол ночи просидел, но доработал... Цацка, конечно... Но задача выполнена 8)
Последний раз редактировалось baytuch Чт июн 10, 2010 11:28, всего редактировалось 1 раз.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

bj
HO Moderators
Сообщения: 1445
Зарегистрирован: Вт фев 13, 2007 13:18
Контактная информация:

#11 Сообщение bj » Ср июн 09, 2010 08:35

baytuch писал(а): Почему-то, не удается изменить значение параметра, не указав, придваритель, его значение в CSS... На этом и застрял...
js может поменять только инлайн стили.
В жизни не все так просто, а гораздо проще

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#12 Сообщение baytuch » Ср июн 09, 2010 17:44

bj писал(а):
baytuch писал(а): Почему-то, не удается изменить значение параметра, не указав, придваритель, его значение в CSS... На этом и застрял...
js может поменять только инлайн стили.
Да?.. Спасибо, что подсказали, а то...
Прямо так в своей книжке такого не нашол. Но описано, что можно изменить значение... :roll: Ну, теперь знаю...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#13 Сообщение baytuch » Сб июл 03, 2010 12:53

А вот так, примерно, все это работает:
http://www.mobiluch.pl.ua/pages/massager/
Последний раз редактировалось baytuch Ср июн 22, 2011 14:33, всего редактировалось 1 раз.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#14 Сообщение baytuch » Сб авг 07, 2010 12:07

Во фюжен интегрировал так:
в панель футера добовил это:
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width='350' class='mas' id='mas' border='1'>
<tr>
<td id='td' class='td'>
</td>
</tr>
<table>\n";
echo "<script type='text/javascript' src='".THEME."massager.js'></script>";


CSS:
.mas{
position: absolute;
top: 0;
left: 0;
border-color: #000000;
border-width: 0;
background-color: #000000;
}

.td{
background-color: #000000;
}

Ну, и создал файл со свмим скриптом под именем massager.js соответственно...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#15 Сообщение baytuch » Вт авг 10, 2010 14:00

Ребята, подскажите, а событие объекта windows onbeforeunload давно паявилось ( именно этим событием инициируется скрипт ? Просто, по моему, на старой Opera ( 8.54 ) не работает... ( не работает "вертелка" в панели управления хостингом. Именно там и подсмотрел :) ).
Ну, у меня так записано:
windows.onbeforeunload = start;
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

Ответить