[JavaScript] setTimeout nie działa...

Odpowiedz Nowy wątek
2006-09-26 21:54
0

Mam funkcję którą wywołuję w
<form ... onSubmit="submit_f()">

a funkcja wygląda tak:

<script>
function submit_f(){
  window.opener.location.reload();
  setTimeout("window.close();",3000);

}

</script>

Całość odbywa się w popupie i ma polegać na tym, że po
przetworzeniu formularza ma to zostać przeładowana strona z której
otwarłem popupa i po 3 sekundach zamknięty popup (jeśli daję bez
opóźnienia to czasami nie przetworzy formularza). Niestety nie
działa ten setTimeout i nie zamyka strony. Jak dam alert('ble'); po
setTimeout to wyswietl alerta i zamknie popup. Co to może być?


Pozostało 580 znaków

2006-09-26 21:58
ŁF
0

to nie settimeout, tylko window.close() nie działa. w większości przeglądarek można wyłączyć możliwość zamykania okien przez skrypt.


Pozostało 580 znaków

2006-09-26 22:32
0

Otóż window.close() działa jak wcześniej napisałem . Tylko w setTimeout'cie nie działa :/


Pozostało 580 znaków

2006-09-26 22:33
0

Jeśli dobrze rozumiem to w popupie submitujesz formularz i w zdarzeniu onsubmit chcesz przeładować openera i zamknąć popupa. Jeśli tak to bezsensu to zaplanowałeś, bo nie możesz zamknąć popupa, który jeszcze się nie przeładował a jak wpiszesz opóźnienie przez setTimeout to zostanie ono usunięte po przeładowaniu popupa. Przydało by Ci się zdarzenie afterSubmit, ale takiego nie ma, więc spróbuj inaczej zaprojektować skrypt.


Pozostało 580 znaków

2006-09-26 22:54
0
<ort>Napewno</ort> cała... sprawa jest conajmniej dziwna, bo w żadnym zdarzeniu to nie działa (onClick, onMouseOver,onSubmit), ale jak wywołam tą funkcje z znaczników <script> to działa... Dziwność ...

Pozostało 580 znaków

2006-09-26 23:17
0

pokaż jak to masz wszystko zrobione - najprostszą wersję wszystkiego - włącznie z oknem opener


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-09-26 23:22
0

Będzie ciężko, bo to jest system cms, i jest tego sporo, bardzo sporo...

Generalnie główną ideę przedstawiłem. To co pokazałem nie działa w zdarzeniach, a tylko w normalnym <script></script>
onLoada nigdzie nie ma.


Pozostało 580 znaków

2006-09-26 23:33
0

A oto prosze państwa rozwiązanie tego problemu:

884768 (http://support.microsoft.com/kb/884768/PL/) BUG: You cannot close an Internet Explorer window by using the window.setTimeout(window.close,1) method in Windows XP Service Pack 2 (z tym, że ja mam SP1 i firefoxa).

Ale to też nie to, bo jak wywalę submita a wywołanie funkcji dam do to działa i zamyka okienko, a jak mi submituje, to tylko przeładuje openera a okienka qrde nie zamyka.


Pozostało 580 znaków

2006-09-27 16:43
0
wowo napisał(a)

A oto prosze państwa rozwiązanie tego problemu:

Pudło, tam są tylko podobne wyrazy.

Ale to też nie to, bo jak wywalę submita a wywołanie funkcji dam do to działa i zamyka okienko, a jak mi submituje, to tylko przeładuje openera a okienka qrde nie zamyka.

przeczytaj jeszcze raz co napisalem, przeladowanie strony niszczy setTimeout, na tej przeladowanej juz go nie ma, nie zyje...

zrob tak:

index.html
----------------------
<a href="javascript:void(open('popup.html'))">otworz okno</a>
popup.html
----------------------
<script>
function submit_f() {
  opener.location.reload();
  // setTimeout('close()', 3000); <-- to jest zle, to nie istnieje jak sie przetworzy formularz
  // po submit'cie laduje sie nowa strona i na niej juz nie dziala setTimeout z poprzedniej
  // nawet gdybys action formularza ustawil na ten sam dokument w ktorym jest formularz
}
</script>
<form action="inna.html" onsubmit="submit_f()">
  <input type="submit">
</form>
inna.html
----------------------
<script>
  close(); // <-- tu jest dobrze
</script>

Pozostało 580 znaków

2006-09-28 10:40
0
piechnat napisał(a)

przeczytaj jeszcze raz co napisalem, przeladowanie strony niszczy setTimeout, na tej przeladowanej juz go nie ma, nie zyje...

Masz rację, niepotrzebnie się tak upierałem przy moich tezach ;-)

Problem rozwiązałem, bo jak się okazało twórca cmsa ustawił zmienną w systemie szablonów dla body onloada i teraz jak doda się do bazy co trzeba to sobie tam wrzucam ten reload i window.close i wszystko śmiga jak powinno :-)


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0