Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   setTimeout. Что не так делаю ? (https://javascript.ru/forum/dom-window/12341-settimeout-chto-ne-tak-delayu.html)

lolka84 13.10.2010 09:52

setTimeout. Что не так делаю ?
 
Добрый день.
Имеем:
<form>
.....
.....
<input type='submit' value='Сохр.' name='svtr' style='width:40px; height:18px; font-size:9px;' onclick='closetrtimer()' />
</form>

function closetrtimer() {
  window.setTimeout("closetr();",1000);
}
function closetr() {
	    if (confirm("Закончить редактирование?")) {
	        return true;
	    } else {
	        return false;
	    }
	}

Хочу, что б при клике на кнопку отправлялась форма и через секунду вылезал alert. Данный пример не делает вообще нечего: т.е. форма уходит, а js сообщения нет. В консоли ошибок пусто, браузер opera.
Где ошибка ?

Kolyaj 13.10.2010 10:13

Весь код покажите.

lolka84 13.10.2010 10:15

Ээм, пардон, весь код чего ?
Форма там немаленькая, js скрипты подключаются отдельным файлом, если вы это имеете в виду.

Kolyaj 13.10.2010 10:17

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

lolka84 13.10.2010 10:21

Если сразу вызывать 2ю функцию, то все ок, скрипт работает. Через функцию с таймером - не работает.
Т.е. onclick='closetr()' - все ок, onclick='closetrtimer()' - никакой реакции.

lolka84 13.10.2010 10:24

Мысль посетила: мы жмем кнопку, запускается таймер, форма уходит на обработку, страница обновляется. Вот при этом обновлении мож таймер както сбрасывается ? В этом может дело ?:)

Kolyaj 13.10.2010 10:30

Конечно при перезагрузке страницы скрипты тоже перезагружаются.

lolka84 13.10.2010 10:41

Ок, тогда с самого начала все расскажу:
Есть два файла - 1.php и 2.php.
В 1.php при нажатии на кнопку создаем окно, куда грузим 2.php:
<input type='button' value='Редактировать' onclick="window.open('2.php', 'wndname', 'параметры');" style='width:90px; height:15px; font-size:10px; margin:2px 0 0 5px;'  />

В 2.php форма, которая описана в первом посте.
Идея такая: в созданном окне "wndname", куда грузится 2.php, после совершенных манипуляций в форме и ее submit'a через секунду после этого должен вылазить confirm. Если жмем в нем ОК - редактируем форму дальше, жмем Отмену - окно закрывается, и та страница, с которой это окно было создано (т.е. 1.php), обновляется, т.е. происходит чтото типа document.location='1.php';.
Вопросы:
1. Как реализовать запуск скрипта через секунду после submit'a формы;
2. Как реализовать обновление 1.php при закрытии 2.php ?

Kolyaj 13.10.2010 10:56

Цитата:

Сообщение от lolka84
1. Как реализовать запуск скрипта через секунду после submit'a формы;

a. Отправлять форму без перезагрузки страницы (XMLHttpRequest, отправка в iframe).
b. Выставлять таймер в родительском окне.
c. Возможно ещё варианты в зависимости от конкретных условий.

Цитата:

Сообщение от lolka84
2. Как реализовать обновление 1.php при закрытии 2.php ?

Периодически проверять наличие окна, например.
var w = window.open();
(function() {
    if (w) {
        setTimeout(arguments.callee, 50);
    } else {
        alert('Окно закрылось');
    }
})();

lolka84 13.10.2010 11:18

Ок, раз все так сложно, пойду другим путем :)
1.php -
<input type='button' value='Редактировать' onclick="funcname();" style='width:90px; height:15px; font-size:10px; margin:2px 0 0 5px;'  />

function funcname() {
var newwindow = window.open('2.php', 'wndname', 'параметры');
newwindow.focus();
}

Т.е. просто даже при наличии окна wndname при клике на кнопку оно вылазит поверх остальных вкладок. Фишка в том, что вот это вот newwindow.focus(); не работает :( Что тут не так ?
Еще такой вопрос: какими средствами создается окно, которое как бы блокирует все остальные вкладки до закрытия самого себя ?


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