Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » В помощь вебмастеру » FAQ по созданию всплывающих и диалоговых окон (pop-up/popup)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Открыть новую тему     Написать ответ в эту тему

Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
обзор форума » (клиентские скрипты » JavaScript) »  FAQ по окнам / Новые вопросы по окнам

 
Новые вопросы по браузерным окнам
По всплывающим (pop-up) окнам, а также модальным (диалоговым) окнам

 
В связи с тем, что "шапка" данной темы значительно разрослась, она была вынесена в отдельную закрытую тему.
 

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 13:03 09-07-2003 | Исправлено: Svarga, 03:54 28-06-2004
Zaborostroitel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Svarga
А как сделать поп-андер окно, т.е. окно , которое незаметно открывается под текущими?
Если можно подробно (как задать функцию , как вызывать)...
 
Добавлено позднее:RE:offtop:   спасибо, меня тоже радует...  
 

Всего записей: 226 | Зарегистр. 03-03-2003 | Отправлено: 13:25 16-07-2003 | Исправлено: Zaborostroitel, 02:01 17-07-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zaborostroitel
обновил первый пост: смотри в самом начале ответы на твои вопросы.
Кстати, практически готова статья по окнам — в ней подробно описывается и показывается создание почти всех видов окон... Скоро, думаю, появится на http://ru-board.com
 
<!-- offtop
 весёлый аватар
-->


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:41 17-07-2003
Zaborostroitel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Цитата:
время, в течении которого открыта страница, определяется легко (после загрузки страницы переменной присваиваем значение текущего времени, при уходе со страницы сравниваем время ухода с сохранённым значением), но если нужно учитывать то, что кто-то мог вернуться на страницу с других страниц сайта-- без кук не обойтись.  
 
А вообще, давай в FAQ'е по окнам продолжим: сформулируй чётко, что именно надо-- сделаю  

Продолжаем ...  
Скажем , сформулировать чётко можно так:  
надо сделать такой скрипт , что бы посетитель при уходе с сайта (именно с сайта, а не страницы) не по ссылке с него перенаправлялся поп-апом на другой сайт при условии , что он пробыл на сайте (не странице) , допустим менее 3-х минут (или , как вариант, просмотрел менее 3-х страниц)...
Вроде так.  Я , кстати, так и подумал , что без кук здесь не обойтись.(а я что и как с ними делают - понятия не имею).
 
И ещё одна небольшая просьба . Svarga, посмотри код .  Что-то он не доделывает то , что должен , вроде.
Код:
<BODY onUnLoad="win()">
<script>    
function win(){  
var w=760
var h=400
var wc=(screen.availWidth-w)/2  
var hc=(screen.availHeight-h)/2  
var wi=window.open("http://www.msk.ru","","top=2500,left=2500,toolbar=yes,location=yes,resizable=yes,status=yes,scrollbars=yes,resize=yes,menubar=yes,width="+w+",height="+h+"");
wi.blur();
wi.moveTo(wc,hc);  
}    
</script>

В общем, окно за пределами открывает... Вниз опускает (т.е. под текущее окно)... А вот на центр страницы не перемещает, оставляет окно за экраном как было    Вместо " wc,hc " подставлял числа - результат тот же...
Что интересно , пока в оффлайне страницу проверял - всё работало , как закачал - перестало  
 
А может это с моими браузерными проблемами связано ? Я тут как раз Гугль-бар новый закачал , а он окна всплывающие убивает теперь. Хотя , вроде, отключал я опцию эту на время теста...

Всего записей: 226 | Зарегистр. 03-03-2003 | Отправлено: 03:48 08-09-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zaborostroitel

Цитата:
Скажем , сформулировать чётко можно так:...  

посмотрю...

Цитата:
В общем, окно за пределами открывает... Вниз опускает (т.е. под текущее окно)... А вот на центр страницы не перемещает, оставляет окно за экраном как было    Вместо " wc,hc " подставлял числа - результат тот же...  

а зачем за пределами открывать, а потом перемещать?
не проще ли сразу в центре открыть?

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 00:05 09-09-2003
Zaborostroitel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
а зачем за пределами открывать, а потом перемещать?  
не проще ли сразу в центре открыть?

Ха , так юзверь его сразу увидит и убьёт !  Не даст догрузиться (а страница , допустим, нелёгкая, с графикой )... Я и сам если какое окно выпрыгивает , душу его сразу, ведь пара-тройка таких вероломных окон может подвесит весь мой диал-ап ...
 
А если за пределами открыть , то , кроме как в панели задач, открытие окна и не обнаружишь. Т.е. если юзер в полноэкранном режиме , либо не особо вниз экрана пялится , то страницу он увидит лишь после закрытия верхнего окна , уже полностью загруженную , как будто она всегда там была...
 А так как перенаправляю я его не совсем уж на левую страницу , а тематически связанную , есть большие шансы , что он ею заинтересуется...

Всего записей: 226 | Зарегистр. 03-03-2003 | Отправлено: 01:20 09-09-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zaborostroitel
ага...
 если страница, открываемая в новом окне, на другом домене-- то доступ скрипта к этому окну блокируется после открытия окна (типа-- по соображениям безопасности)...
 
Кстати, вычисление координат окна, чтоб его в центр экрана поместить, в таком духе:

Код:
var wc=(screen.availWidth-w)/2  
var hc=(screen.availHeight-h)/2  
может проглючивать-- только что у меня получилось дробное значение, а пикселы только целыми числами бывают-- так что надо, стало быть, делать так:

Код:
var wc=parseInt((screen.availWidth-w)/2)
var hc=parseInt((screen.availHeight-h)/2)

 
Щас в шапке исправлю...
 
А в таком духе, как у тебя-- даже если б работало, получится, что окно должно переместиться в центр экрана сразу после открытия-- потому и спросил, к чему такие сложности (таймаут, однако, нужен )
 


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:26 09-09-2003 | Исправлено: Svarga, 02:40 09-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задача: есть окно, в котором открывается модальное окно, которому передаются параметры. Потом в модельном окне с этими данными (доступ через window.dialogArguments) производятся магинуляции. Как потом эти данные обратно в главное окно переслать?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 18:57 09-09-2003
Zaborostroitel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
если страница, открываемая в новом окне, на другом домене-- то доступ скрипта к этому окну блокируется после открытия окна (типа-- по соображениям безопасности)...  
Это железно ? Неужели нельзя как-то обойти это ?

Цитата:
А в таком духе, как у тебя-- даже если б работало, получится, что окно должно переместиться в центр экрана сразу после открытия-- потому и спросил, к чему такие сложности (таймаут, однако, нужен )  
Без тайм-аута , никак ? А как его заделать можно ?
В любом случае , спасибо за ответы...
 
С куками для открытия окна , что-нибудь проясняется ?

Всего записей: 226 | Зарегистр. 03-03-2003 | Отправлено: 02:46 10-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Так. Возвращаем с помощью свойства returnValue, но можно в нем передавать несколько переменных?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 12:52 10-09-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zaborostroitel
сорри за задержку...
Нарисовал скрипт:

Код:
 
<script>
var min=3 //сколько минут должны пробыть на сайте
var paga=3 //сколько страниц должны просмотреть
 
var ext=true; var d=document; var p="; path=/"
var exp=new Date(); var god=exp.getTime()+365*24*60*60*1000;exp.setTime(god)
var e="; expires="+exp.toGMTString()
 
function parseCookie(ret){
var val=d.cookie.split('; ')
for(var i=0;i<val.length;i++) {var tmp=val[i].split('=');if(tmp[0]!='')eval("var "+tmp[0]+'='+parseInt(tmp[1]))}
return eval(ret)
}
 
if (d.cookie.indexOf('page=')> -1) {d.cookie='page='+(parseCookie('page')+1)+e+p}
else {
d.cookie="page=1"+e+p;d.cookie= "chas="+((new Date).getTime()+min*60*1000)+e+p
}
 
function checkTime(){
if (((((new Date).getTime()-parseCookie('chas'))/min/60/1000)<min)&&(parseCookie('page')<paga))
{return true}
else{return false}
}
 
/*
тут идёт функция для открытия окна-- она отрабатывается,
только если посетитель был на сайте меньше min минут или
просмотрел меньше paga страниц
*/

 
function win()
{
window.open('http://urla','')
}
</script>
 
<body onUnLoad="if((checkTime())&&ext){win()}">
 
<a href=# onClick="ext=false">link</a>
 

Может и есть ошибки... потесть плиз (а то делал на скорую руку-- не исключены глюки)...
Должён быть на каждой странице сайта, все сайтовые ссылки должны быть оформлены как sample ссылка (см. выше) и должён делать (в теории):
исполнять функцию win если:
1. посетитель уходит со страницы не по ссылке на странице или
2. посетитель пробыл на сайте меньше 3-х минут (настраивается) или
3. посетитель был менее, чем на трёх страницах сайта (настраивается)
 
(не забывай при проверке постоянно чистить куки -- я проверял в 5-м ИЁ, 1.3 Мозилле и Опере 7, но не особо основательно проверял-- может и что-то не то быть)
 

Цитата:
Без тайм-аута , никак ? А как его заделать можно ?

никак, вроде бы , хотя пробовал-- что проглючивает... разберусь отчего-- распишу, что и как.
 
EndoR

Цитата:
Задача: есть окно, в котором открывается модальное окно, которому передаются параметры. Потом в модельном окне с этими данными (доступ через window.dialogArguments) производятся магинуляции. Как потом эти данные обратно в главное окно переслать?


Цитата:
Так. Возвращаем с помощью свойства returnValue, но можно в нем передавать несколько переменных?

Большой сорри за поздний ответ -- попробую разобраться.

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 18:34 11-09-2003 | Исправлено: Svarga, 18:36 11-09-2003
Zaborostroitel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Svarga
Спасибо ограмное, буду тестить...

Всего записей: 226 | Зарегистр. 03-03-2003 | Отправлено: 22:47 11-09-2003
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Как узнать размер картинки для того, чтобы открыть под неё окно соответствующего размера?  
 ! Только предварительно загрузив интересующую картинку перед открытием нового окна:  
Код:var temp=new Image();  
temp.src="picture.gif";  
размер будет temp.width и temp.height  

а нельзя ли подробнее, пожалуйста, для бестолковых? (paste in header: paste in body) Заранее большое спасибо  .
 
 
 

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 18:57 26-10-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
natpoit
желательно в хед:

Код:
<script>
function imgWin(img)
{
var tmp=new Image
tmp.src=img
var wdth=tmp.width+20
var hght=tmp.height+20 //
/*тут нужно посчитать, сколько пикселов уходит на margin'ы
   вокруг картинки и вставить число вместо 20-- это чтоб полос прокрутки
   ненужных не появилось */
window.open(img,'','width='+wdth+',height='+hght)
}
</script>

И ссылки в таком духе:
<a href="javascript:void imgWin('http://site.com/image1.jpg')">Картинка №1</a>
 
хм... что-то так с высотой проблемы везде... а заодно проблема с мелкими картинками в 7-й Опере (она адрес картинки под ней текстом выводит)...
 
EndoR, сорри, с твоей проблемой так и не разобрался толком
А решение-- передавать несколько значений внутри одного массива...


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:31 27-10-2003
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
огромное спасибо!  

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 10:53 27-10-2003
dms II

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно чтобы окно выскакивало при закрытии страницы и состояло из 20-30 ссылок стоящих в столбик, что-то вроде ТОПа из нескольких ссылок, оно должно выскакивать в центре экрана и не закрываться если его не активировать. Ну или хотя бы чтобы открывалась созданная хтмл страница с этим же содержанием, но тоже в центре размером 200 x 200.
 
Всем заранее спасибо за помощь.

Всего записей: 94 | Зарегистр. 23-07-2003 | Отправлено: 01:01 08-01-2004 | Исправлено: dms II, 01:06 08-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dms II

Цитата:
Всем заранее спасибо за помощь.  

Млин... ну я тебе сюда указал.. чтобы ты прочитал сначала.. посмотри наверх страницы..

Цитата:
5. Окно по центру:  
 
Код:var w=300 // ширина окна  
var h=400 //высота окна  
var wc=parseInt((screen.availWidth-w)/2)  
var hc=parseInt((screen.availHeight-h)/2)  
window.open('link.html','','width='+w+',height='+h+',top='+hc+',screenY='+hc+',left='+wc+',screenX='+wc)  
 

Цитата:
и не закрываться если его не активировать.
Вот это по русски, плиз..


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:08 08-01-2004
worldhosting



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите плиз в каком направлении идти. Задача такая:
 
1. При нажатии на ссылку открывается новое окно со страницей для логина.
2. На этой самой странице (где надо залогиниться) надо установить значения полей username и password в нужные. (То есть достаточно чтобы при открытии этой странице - пользователь уже не заполнял эти поля вручную, а просто нажал кнопку "логин").
 
Просто страница на которой нужно залогиниться - имеет кучу китайских проверок и потому передать все постом не получается. Да и такого варианта что описан выше - вполне достаточно (ведь можно и кнопку сабмит - установить в нужное значение).
Давно не писал ничего на яваскрипте - вот и не могу ничего толкового придумать По первому все ясно , а во второму что-то не ловится

Всего записей: 2570 | Зарегистр. 11-09-2002 | Отправлено: 14:37 11-01-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
worldhosting

Цитата:
На этой самой странице (где надо залогиниться) надо установить значения полей username и password в нужные. (То есть достаточно чтобы при открытии этой странице - пользователь уже не заполнял эти поля вручную, а просто нажал кнопку "логин").  

Cookies можно временные делать, а на странице с формой для логина считывать из них username и пароль, или вообще в открываемом окне делать по onLoad копирование значений с parent страницы (через opener.document.formName...).
 
И то и другое будет работать, если обе страницы находятся на одном домене.

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 15:01 11-01-2004
worldhosting



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
хм, проблема то как раз в том, что страница где надо логиниться - не моя. то есть это надо с нашего сайта сделать редирект на чужой сайт и при этом подставить данные в форму. домены естественно разные. get не катит, post тоже. уже проверял.  
 
я вообще curl сначала пытался использовать - но не прокатывает - там китайские проверки сначала попадаешь на страницу логина, вводишь свои логини пароль, потом тебя редиректят куда-то и только после этого попадаешь туда куда надо. к тому же еще  и куки выдаются.
 
все таки придется наверное курлом что то делать. хотя у меня никогда не получалось куки в нем использовать (чужие конечно, не свои).  курлом вообще пользоваться не хотел - просто потому что мне не надо ничего делать с их страницей - достаточно только подставить данные юзера и все и дать ему залогиниться...
 
PS. А может iframe попробовать? Или просто frame? По идее же можно из одного окна в другое данные переносить - или там тоже есть ограничение на домен?

Всего записей: 2570 | Зарегистр. 11-09-2002 | Отправлено: 16:01 11-01-2004 | Исправлено: worldhosting, 16:06 11-01-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Компьютерный форум Ru.Board » Интернет » В помощь вебмастеру » FAQ по созданию всплывающих и диалоговых окон (pop-up/popup)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru