Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сделать задержку открытия на минуту после бездействия пользователя
 
 автор: mister_pipin   (16.01.2011 в 02:59)   письмо автору
 
 

Ребят, помогите сделать задержку открытия на минуту после бездействия пользователя
<script type="text/javascript" src="swfobject.js"></script>

<DIV align="center" id="flashcontent" style="Z-INDEX: 10; LEFT: 300px; WIDTH: 450px; POSITION: absolute; TOP: 0px; HEIGHT: 70px">

net

</div>


<script type="text/javascript">

var imgWidth = screen.width - '5px';

var imgHeight = screen.height;

var so = new SWFObject("sneg.swf", "mymovie", "1024", "600", "9");

so.addParam("allowScriptAccess", "always");

so.addParam("wmode", "transparent");

so.write("flashcontent");



function kill() {

document.getElementById("flashcontent").style.display = "none";

}
</script>

  Ответить  
 
 автор: sim5   (16.01.2011 в 03:17)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 02:59)
 

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

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 03:19)   письмо автору
 
   для: sim5   (16.01.2011 в 03:17)
 

В моем понимании бездействие когда мышь не активна, ведь так?

  Ответить  
 
 автор: sim5   (16.01.2011 в 03:21)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 03:19)
 

Что значит не активна?

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 03:23)   письмо автору
 
   для: sim5   (16.01.2011 в 03:21)
 

в смысле пользователь не водит мышью, отошел к примеру, ничего не делает

  Ответить  
 
 автор: sim5   (16.01.2011 в 03:30)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 03:23)
 

А если я бесцельно буду водить мышкой, то значит я чего-то делаю?
Вы уж конкретезируйте, чего вы хотите от пользователя. Если он при открытии страницы должен сделать нечто, как то ввести что-то в поле ввода, при этом фокус может быть уже установлен, а значит и двигать мышкой нет надобности. Либо чего-то щелкнуть и т.п. А двигать мышкой ради того, чтобы не появлялось бог весть что, возможно ему сосвем не нужное, так это утомительно.
Вот из этого как-то исходить - то есть, одноразовая это задача или нет, что должно происходить если он выполнит условие...
А на двигать, так это обрабатывайте событие движения мыши у тела документа (body).

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 03:35)   письмо автору
 
   для: sim5   (16.01.2011 в 03:30)
 

таймер должен начинать отчет после того как мышь не двигается минуту и больше, не важно были ли клики или нет, главное что мышь не двигалась минуту, вот так

  Ответить  
 
 автор: sim5   (16.01.2011 в 03:40)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 03:35)
 

Так как вы хотите сделать не возможно, вы можете только запустить таймер по окончании загрузки страницы, который можно остановить движением мыши, и если в течении минуты такового не произошло, то запустить задачу. А вот дальше...

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 03:46)   письмо автору
 
   для: sim5   (16.01.2011 в 03:40)
 

а вот дальше мне и нужно(

  Ответить  
 
 автор: sim5   (16.01.2011 в 03:48)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 03:46)
 

А дальше я не в курсе чего вам надо.

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 03:50)   письмо автору
 
   для: sim5   (16.01.2011 в 03:48)
 

мне нужно открыть флеш объект через заданное время, тот, который я показал выше, можно ли так сделать?

  Ответить  
 
 автор: sim5   (16.01.2011 в 04:37)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 03:50)
 

<html>
<head>
<script type="text/javascript">
function fn() {
  alert("Событие по таймеру");    
}

function clr() {
  clearTimeout(tm);
  document.body.removeEventListener("mousemove", clr, false);
  alert("Сброс таймера и обработчика мыши");
}
var tm;
function init() {
  tm = setTimeout('fn()', 1000); //время в милисекундах    
  document.body.addEventListener("mousemove", clr, false);  
}
</script>
</head>
<body onload="init()">
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
</body>
</html>

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 15:32)   письмо автору
 
   для: sim5   (16.01.2011 в 04:37)
 

Спасибо за быструю помощь, я маленько скрипт переделал под себя
<html>

<head>

<script type="text/javascript" src="swfobject.js"></script>

<script type="text/javascript">

function fn() {

  alert("Событие по таймеру");    

}



function clr() {

  clearTimeout(tm);

  document.body.removeEventListener("mousemove", clr, false);

  document.getElementById("flashcontent").style.display = "none";

}

var tm;

function init() {

  tm = setTimeout('i()', 5000); //время в милисекундах    

  document.body.addEventListener("mousemove", clr, false);  

  

}

</script>

</head>

<body onload="init()">

<DIV align="center" id="flashcontent" style="Z-INDEX: 10; LEFT: 0px; WIDTH: 0px; POSITION: absolute; TOP: 0px; HEIGHT: 0px">

net

</div>

<script type="text/javascript">

function i()

{

var so = new SWFObject("sneg.swf", "mymovie", "1177", "600", "9");

so.addParam("allowScriptAccess", "always");

so.addParam("wmode", "transparent");

so.write("flashcontent");

}

function kill() {

document.getElementById("flashcontent").style.display = "none";

}

</script>

</body>

</html>



теперь все работает хорошо, вот только с таймером не получилось, он начинает отчет, когда я обновляю страницу и ничего не делаю, тогда объект открывается через 5 секунд, когда мышью начинаю водить, срабатывает эта функция

function clr() {

  clearTimeout(tm);

  document.body.removeEventListener("mousemove", clr, false);

  document.getElementById("flashcontent").style.display = "none";

}

после этого нужно снова обновлять страницу и не водить мышью и все будет работать

можно ли сделать так, что бы отчет начинался с того момента, как я перестаю водить мышью по странице?

  Ответить  
 
 автор: sim5   (16.01.2011 в 15:39)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 15:32)
 

Да, переделка сердитая )

1. В функции fn и должно выполняться действие вам нужное, и коли вы переназначили имя функции, то выбросите вы ее за ненадобностью.
2. Так вы и указали время 5 сек. Я ведь написал, что время в милисекундах, а в одной секунде их 1000. Вопрос, сколько милисекунд вам надо указать, чтобы была 1 минута? Две секунды в примере, это просто для того, чтобы вы "пощупали" и поняли, а для этого ждать минуту слишком....

>можно ли сделать так, что бы отчет начинался с того момента, как я перестаю водить мышью по странице?

Вы хотите чтобы вас метерили? Вот как вы себе это представляете? И что вы аля html-хранитель экрана делаете?

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 15:47)   письмо автору
 
   для: sim5   (16.01.2011 в 15:39)
 

минута в миллисекундах будет 60000 , function i() у меня выполняется только один раз, я обновляю страницу и ничего не делаю, она срабатывает, при наведение мыши на объект он исчезает(как и нужно), но когда я останавливаю мышь, эта функция больше не срабатывает(, как переделать что бы отсчет начинался тогда, когда я останавливаю мышь?

  Ответить  
 
 автор: sim5   (16.01.2011 в 15:53)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 15:47)
 

Значит так - этот пример запускает нечто по истечении указанного времени начиная с окончания загрузки страницы, и выполяется это ОДИН РАЗ. Если за установленное время пользователь передвинет мышь, то ЭТО не будет выполнятся вообще!

Именно так и стоял у вас вопрос изначально. Тепереча вы ставите его так - "кровь из носа, но мне очень хочется показать некую свою хрень пользователю". Вопрос - вы это хотите показывать бесконечно? Лично мне бы такая хрень до того надоела, что я бы вас пристрелил к чертовой матери. )

И так, что вам надо?

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 15:58)   письмо автору
 
   для: sim5   (16.01.2011 в 15:53)
 

извиняюсь за свою тупость изначальную(,

вобщем нужно что бы отчет шел с того момента, когда мышь перестает быть активной и тогда запускается нечто, к примеру пододвинул мышь, она остановилась, значит начинается отчет, снова пододвинул, отчет начинается заново и так все время, вот что мне нужно было с самого начала(
еще раз извиняюсь

  Ответить  
 
 автор: sim5   (16.01.2011 в 16:13)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 15:58)
 

Давайте так - я пользователь, я говорю так, как мне было бы удобно, а вы уж приготовьте сценарий четкий, ибо "когда мышь перестает быть активной...", это понятие резиновое.

И так, если я установлю у себя хранитель экрана на срабатываете через одну минуту, то согласитесь, что я буду вынужден двигать неистово мышкой, чтобы он мне не мешал. Ведь я просто могу читать, а не обязательно что-то выполнять мышью.

Теперь я открываю вашу страницу. Что должно произойти, начиная с этого момента, через какое время и по отсутствию чего со стороны пользователя, чтобы запустить нечто? Вы не допускаете, что он чем-то заинтересуется у вас и будет читать, зачем ему мышкой двигать? А тут через минуту, ни жданно, ни гаданно на тебе сюрприз. Вот как это будет по вашему, нормально?

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

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 16:27)   письмо автору
 
   для: sim5   (16.01.2011 в 16:13)
 

Вы не будете вынуждены двигать мышью все время так, как время я думаю достаточно(хотя его можно и увеличить),вот

с того момента как я или Вы или кто либо другой зайдет на страницу в любом случае он будет водить мышью или крутить колесо мыши, вот к примеру Вам что то понравилось, читаете, но сколько времени у Вас это займет? за минуту можно много прочитать(или за две минуты), а мышь как я понимаю всегда в руке у пользователя и он, не произвольно водит ее, и я думаю что он не вынужден будет водить мышью что бы через заданное время открылось нечто, как думаете, если пользователь не водит мышью 2 минуты, что он делает? конечно может читать, но с помощью Вас скрипт так работает, что даже если вылезет нечто, то нужно будет всего лишь пододвинуть мышь что бы это нечто пропало

в конечном итоге я хотел что бы отчет времени начинался всегда после того как мышь не активна(в смысле не двигается)

  Ответить  
 
 автор: sim5   (16.01.2011 в 16:40)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 16:27)
 

>Вы или кто либо другой зайдет на страницу в любом случае он будет водить мышью или крутить колесо мыши

Вы в этом уверены? Я нет, ибо я открывая страницы сайтов, которые постоянно читаю, я читаю анонсы, а их предостаточно входит в мое разрешение экрана. С какого ляду я обязательно должен крутить, двигать? Вы как программист, всегда должны предусматривать все "если", а не исходить из того, чего вам захотелось.

Вот если бы так же поступили разработчики Windows, так плевком на потолок прикинули, что а достаточно минуты две, и можно запускать хранитель экрана, и при этом не давать пользователю не изменить время, ни отключить его... Да вы бы мама орали постоянно от такого хранителя. А разработчики Windows подумали, и не так как вы, и посему дали возможность управлять временем, и вообще отключать хранитель экрана.

Сделать не сложно будет по мышке, но вы сперва определелитесь с пользователем - никогда не думайте, что все будут поступать именно так, как вы думаете, это в корне не верно. Вам ваш контент известен, определяйтесь.

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 16:59)   письмо автору
 
   для: sim5   (16.01.2011 в 16:40)
 

что бы открылось нечто(хранитель экрана), пользователь не должен :
1. водить мишью
2. кликать (а если кликает, значит водит мышью)
3. крутить колесо мыши(а это снова движение мыши)
4. просто ничего не делать

исправте если что забыл

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

  Ответить  
 
 автор: sim5   (16.01.2011 в 17:25)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 16:59)
 

Здрастье ) А мне жу откуда знать, что у вас на странице и что может, и чего не может на ней делать пользователь? Я потому и написал - вы контент свой знаете, определяйтесь. Мне что гадать? Щелкнуть, для чего? Если ссылка, то это переход, какой тут разговор может идти о таймере. Если, к примеру, щелчок это открытие большого изображения, то бог его знает, что за изображение и сколько его рассматривать надо. В общем тут вы решаете, не я.

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

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 17:35)   письмо автору
 
   для: sim5   (16.01.2011 в 17:25)
 

один текст только, картинок всплывающих нет, подскажите с чем нужно разобраться, что бы функция

var tm;

function init() {

  tm = setTimeout('i()', 5000); //время в милисекундах    

  document.body.addEventListener("mousemove", clr, false);  

}


начинала отчет когда мышь стоит, могли бы помочь это сделать?
как я понимаю русским языком нужно написать условие если мышь стоит - выполнять эту функцию, как это реализовать?

  Ответить  
 
 автор: sim5   (16.01.2011 в 17:48)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 17:35)
 

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

Если мышь стоит, то вообще ничего не происходит, а значит и ловить нечего. Если же вас только движение мыши интересует, то весь сценарий будет примерно таким:
1. сразу после открытия страницы запускается таймер (хотя в данном случае лучше Interval).
2. каждое движение мыши очищает интервал и вновь устанавливает его, назначая новое время

Вот и получится, что стоит остановить движение мышки, запустится задача.

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 17:56)   письмо автору
 
   для: sim5   (16.01.2011 в 17:48)
 

у меня проблема с реализацией этого кода, а именно с условием, если мышь стоит сбросить интервал
if (если мышь стоит более одной минуты)
{
alert(получилось);
}

вот это дело не получается(. как будет правильно? подскажите, за ранее спасибо

  Ответить  
 
 автор: sim5   (16.01.2011 в 18:05)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 17:56)
 

Если мышка стоит, то ничего не происходит, ловить нечего. Если обрабатывать только движение мышки, то вот так, просто:
<html">
<head>
<script type="text/javascript">
function showFlash() {
  alert("Флешка");    
}

function setTime() {
  clearInterval(tm);
  tm = setInterval('showFlash()', 2000);
}

var tm = setInterval('showFlash()', 2000);
if (window.addEventListener) // mozilla, safari, chrome
    window.addEventListener('mousemove', setTime, false);
// IE, Opera.
window.onmousemove = document.onmousemove = setTime;
</script>

</head>
<body>
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
TEXT TEXT <br />
</body>
</html>
Проверьте, должно работать во всех браузерах.

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 19:05)   письмо автору
 
   для: sim5   (16.01.2011 в 18:05)
 

огромное спасибо за помощь!! переделал и работает + , только пока нет возможности на всех браузерах протестировать, еще хотел что бы объект открывался на всю страницу

new SWFObject("sneg.swf", "mymovie", "100%","100%","9","#336699");


чет не получается, но это я уже как нить сам, спасибо еще раз

  Ответить  
 
 автор: sim5   (16.01.2011 в 19:06)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 19:05)
 

Все таки на всю страницу, ну, ну....

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 19:27)   письмо автору
 
   для: sim5   (16.01.2011 в 19:06)
 

на всю страницу в смысле на окно браузера, а не на весь дисплей

  Ответить  
 
 автор: TavRoX   (16.01.2011 в 19:28)   письмо автору
 
   для: sim5   (16.01.2011 в 19:06)
 

sim5
можна у вас помощи попросить?
попробовал коечто сделать но не выходит
буду благодарен за помощь
как остановить данный скрипт если мышка не шевелится минуту или две


window.setInterval(function () {        // JavaScript Устанавливаем интервал запуска нашей функции
            var lastmes = $("#message div:first-child").attr("id");
            
              // берем id последнего потомка
                $.ajax({
                    async: true,
                    url: "../blocks/showmessage.php", // указываем обработчик на стороне сервера
                    type: "POST", // указываем метод передачи данных 
                    data: {lastmes: lastmes}, // передаем переменные
                    success: function (data) {if (data){
                       $("<div id=\""+(parseInt(lastmes)+1)+"\"></div>").prependTo("#message").html(data);};}
                });
            }, 5000);


пробовал так но чет не пашет

function showFlash() {
  clearInterval(obnovljalka); //поместил верхний код в переменную обновлялка
  alert('stop');   
}

function setTime() {
  clearInterval(tm);
  tm = setInterval('showFlash()', 20000);
}

var tm = setInterval('showFlash()', 20000);
if (window.addEventListener) // mozilla, safari, chrome
    window.addEventListener('mousemove', setTime, false);
// IE, Opera.
window.onmousemove = document.onmousemove = setTime;        
            
    

  Ответить  
 
 автор: sim5   (16.01.2011 в 20:13)   письмо автору
 
   для: TavRoX   (16.01.2011 в 19:28)
 

Нет, по крайней мере на сегодня у меня все. Другие помогут. Могу только заметить, если вы используете jQuery, то писать надо было сразу все не так.

  Ответить  
 
 автор: TavRoX   (16.01.2011 в 20:16)   письмо автору
 
   для: sim5   (16.01.2011 в 20:13)
 

а можна каким либо образом желание вам повысить)
только отвечайте в отдельной теме, что бы тут не путать с авторской
буду очень рад если подтолкнете на путь истинный

  Ответить  
 
 автор: sim5   (16.01.2011 в 20:20)   письмо автору
 
   для: TavRoX   (16.01.2011 в 20:16)
 

У меня одно желание - спать, так как у нас давно глубокая ночь.
А чтобы не мусорить, так это вам не стоит со своими вопросами вклиниваться в чужие темы.

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 15:50)   письмо автору
 
   для: sim5   (16.01.2011 в 15:39)
 

да почему же материли, минуты как раз хватит для того что бы знать что пользователь ничего не делает с мышью, поэтому открывается объект

  Ответить  
 
 автор: mister_pipin   (16.01.2011 в 20:04)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 15:50)
 

у меня еще возник вопрос, как вставить screen.availWidth и screen.availHeight вместо 100%

new SWFObject("sneg.swf", "mymovie", "100%","100%","9");

  Ответить  
 
 автор: sim5   (17.01.2011 в 04:15)   письмо автору
 
   для: mister_pipin   (16.01.2011 в 20:04)
 

И что получится? Вы думаете таким образом ваша флешка "вывалится" на весь экран? Вы получите окно с прокруткой в двух измерениях, не более. Это окну вы такие параметры должны задавать, а размеру видео размер клиентской области окна.

  Ответить  
 
 автор: mister_pipin   (17.01.2011 в 07:56)   письмо автору
 
   для: sim5   (17.01.2011 в 04:15)
 

подскажите пожалуйста как поправить что бы в таком виде работало

new SWFObject("sneg.swf", "mymovie", "screen.availWidth","screen.availHeight","9"); 


за ранее спасибо

  Ответить  
 
 автор: sim5   (17.01.2011 в 09:30)   письмо автору
 
   для: mister_pipin   (17.01.2011 в 07:56)
 

Работало что? Вам сколько раз повторять, что ваша флешка работает в окне браузера, а не сама по себе?

  Ответить  
 
 автор: mister_pipin   (17.01.2011 в 09:46)   письмо автору
 
   для: sim5   (17.01.2011 в 09:30)
 

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

  Ответить  
 
 автор: sim5   (17.01.2011 в 09:49)   письмо автору
 
   для: mister_pipin   (17.01.2011 в 09:46)
 

А я не вам разве писал, что размеру видео вы должны присвоить размер клиентской области окна? Чего же вы тулите ему размеры экрана?

  Ответить  
 
 автор: mister_pipin   (17.01.2011 в 10:00)   письмо автору
 
   для: sim5   (17.01.2011 в 09:49)
 

мне нужно втулить как вы говорите размеры клиентской области экрана, размер экрана не нужно

  Ответить  
 
 автор: sim5   (17.01.2011 в 10:31)   письмо автору
 
   для: mister_pipin   (17.01.2011 в 10:00)
 

От меня что нужно? Я вам приводил код, который позволяет открыть окно в свободной области экрана. Кроме этого показывал как растянуть окно на весь экран (хотя какждый браузер будет вести себя по разному в таких ситуациях). Чего вам еще надо? Указывайте размеры видео в процентах, путь растягиваются.

  Ответить  
 
 автор: mister_pipin   (17.01.2011 в 10:52)   письмо автору
 
   для: sim5   (17.01.2011 в 10:31)
 

с Вашей помощью я сделал что хотел, я пользуюсь ubuntu 10.10, на локальной машине у меня все работает, а как загружаю на сервер, чет не хочет, буду разбираться

  Ответить  
 
 автор: sim5   (17.01.2011 в 11:21)   письмо автору
 
   для: mister_pipin   (17.01.2011 в 10:52)
 

JavaScript выполняется у клиента, и от сервера не зависит. Так что ищите причину не в нем.

  Ответить  
 
 автор: mister_pipin   (17.01.2011 в 11:23)   письмо автору
 
   для: sim5   (17.01.2011 в 11:21)
 

Спасибо что терпели меня все это время

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования