Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z document.location
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
itsover
Mam problem z takim oto skrypcikiem:
function archive(archyear,archmonth,archday) {
document.location='index.php?section=blog&mod=show&archive=on&archyear='+archyear+'&archmonth='+archmonth+'&archday='+archday;
}
Skrypt jest wywoływany przez:
<td width="25" height="20" class="tabela_link" onClick="java script:archive('2004','12','08')";>8</td>
Niestety wywołuje to błąd. Na czym on polega??
revyag
A powiedz jaki błąd ? Bo u mnie wygląda to ok.
itsover
No to sprawa jest dziwna. Okno poprostu się nie otwiera.
U mnie.smile.gif
scanner
Od godziny próbuje zmusić IE do przeładowania się na podany adres.
Na chwile obecna utknąłem na mniejwięcej takim kawałku:
Kod
<script language="javascript" type="text/javascript">
function messageDo( a, i )
{
    switch( a )
    {
  case 'Delete':
     mess = 'Czy na pewno usunąć wiadomość? Tej operacji nie można cofnąć.';
  break;
  case 'Accept':
     mess = 'Czy na pewno odrzucić zgłoszenie do moderacji?';
  break;
    }

    if( window.confirm( mess ) )
    {
  location.href = 'index.php/message/' + a + '/' + i;
    }
}
</script>

I nie mam już pojęcia co jest nie tak.

Ogólnie chodzio to, aby bieżace okno przeładowało się na podany URL pod każdą przeglądarką...
Co robię źle?
bregovic
  1. <script language="javascript" type="text/javascript">
  2. function messageDo( a, i )
  3. {
  4. switch( a )
  5. {
  6. case 'Delete':
  7. mess = 'Czy na pewno usunżż wiadomożż? Tej operacji nie można cofnżż.';
  8. break;
  9. case 'Accept':
  10. mess = 'Czy na pewno odrzuciż zgżoszenie do moderacji?';
  11. break;
  12. }
  13.  
  14. if( window.confirm( mess ) )
  15. {
  16. x = 'http://bla/index.php/message/' + a + '/' + i;
  17. location.replace(x);
  18. }
  19. }

Konkludując powyższe, użyj całego adresu...
scanner
No niestety wciąż pod IE coś to nie za bardzo chce banglać.
Operowanie na oknach w JS nigdy mi nie wychodziło, haha smile.gif

Dokładny kod wygląda tak
Kod
<script language="javascript" type="text/javascript">
function messageDo( a, i )
{
    switch( a )
    {
  case 'Delete':
     mess = 'Czy na pewno usunąć wiadomość? Tej operacji nie można cofnąć.';
  break;
  case 'Accept':
     mess = 'Czy na pewno odrzucić zgłoszenie do moderacji?';
  break;
    }

    if( window.confirm( mess ) )
    {
  l = 'http://localhost/shoutbook/index.php/adminMessage' + a + '/' + i;
  location.replace( l );
    }
}
</script>
orson
witam ...

a zamien na window.location ... u mnie dziala z adresem relatywnym ... aha i dodaj kropke i / przed linkiem np:

Kod
if( window.confirm( mess ) ) {
    window.location. = './index.php/message/' + a + '/' + i;
}


u mnie podobna konstrukcja dziala ...

pozdrawiam
bregovic
Jakiej wersji M$IE używasz? Na mojej WINE'owatej 6.0 to działa... Jak wywołujesz tą funkcję?
Jak zrobisz tak:
  1. <a href="#" onclick="location.replace('http://www.yahoo.com');">clic</a>

To reaguje?
EDIT:
orson U mnie to co podałeś nie działa ani na firefoxie ani na ie...
scanner
Używam IE6 SP1 ze wszystkimi WindowsUpdateami.

Swoją drogą, zrobię to inaczej - skoro w innym miejscu skryptu działa mi otweranie / zamykanie popupa to go wykorzystam także do wywołania akcj z messageDo() - otworzy się i sam zamknie.
pjozwiak1
Witam,
Ostatnio także miałem podobny problem,

Taki kod:
  1. function ConfirmDelete(pytanie,url){
  2. if(confirm(pytanie))
  3. window.location.href = url;
  4. }
  5.  
  6. <A href="javascript:void(0);">
  7. <IMG src="waste.gif" OnClick="ConfirmDelete('Czy chcesz usunąć?','?delete=cos');">
  8. </A>


działał bez problemu pod Firefoxem, natomiast w IE pytał się czy usunąć coś tam, ale nie przeładowywał strony

okazuje się, że na stronie microsoftu wielcy mądrzy panowie od jedynego słusznego oprogramowania napisali:
Internet explorer w wersji powyżej 4.0 czeka na zakończenie wszystkich events z tagu <A> zanim przejdzie do przetwarzania href z tego tagu.
Dlatego window.location.href jest nadpisywane przez element href z tagu <A>

Więcej na temat tego problemu na stronie: http://support.microsoft.com/kb/190244

Rozwiązaniem jest usunięcie tagu <A>, oraz ustawieniem CSS'ami nad obrazkiem/tekstem kursora rączki.

U mnie działa jeśli kod jest napisany w taki sposób:
  1. function ConfirmDelete(pytanie,url){
  2. if(confirm(pytanie))
  3. window.location.href = url;
  4. }
  5.  
  6. <IMG src="waste.gif" OnClick="ConfirmDelete('Czy chcesz usunąć?','?delete=cos');" style="cursor:hand;">
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.