2012-03-05 39 views
6

Formularz na mojej stronie nie działa poprawnie w Safari/Chrome. Kiedy użytkownik przesyła formularz, otwiera nową kartę, ale chcę, aby oryginalna strona (strona z formularzem na niej) przeładowywała. Działa w IE, Operze i Firefox.safari/chrome onsubmit = "location.reload (true)" nie działa

Kod:

<form action="/search.php" method="post" onsubmit="location.reload(true)" target="_blank" name="myform"> 

Próbowałem innych funkcji javascript, takich jak:

  • window.location.reload();
  • document.location.reload();
  • window.location.replace ("http://www.websiteurl.com");
  • window.location.href = 'http: //www.websiteurl.com';
  • I inne odmiany tych.

Pomyślałem, że może to był onsubmit = "" nie działa, ale kiedy próbowałem onsubmit = "alert (" test ")", który działał dobrze zarówno w Safari/Chrome.

Również na stronie search.php że słupki formularz, aby, gdy użytkownik przechodzi bezpośrednio do strony za pomocą adresu URL, a nie złożenia formularza, mam go ustawić, że znacznik ciało zostanie załadowany jako:

<body onload="window.location.replace("http://www.websiteurl.com")> 

, która działa we wszystkich przeglądarkach zawierających Safari/Chrome.

Co się tu dzieje?!?!

Dzięki!

+0

nie wiem dlaczego to nie działa regularnie, ale 'setTimeout' Hack działa: http://jsfiddle.net/xzanQ/. – pimvdb

+0

Czy chcesz również otworzyć nową kartę? – j08691

+0

Miałem podobny problem z ponownym ładowaniem, który nie działał we wszystkich warstwach (choć nie w kontekście przeładowywania formularzy) i zakończył się: window.location = window.location; –

Odpowiedz

4

Ponieważ był to rozwiązanie dla Ciebie:

Korzystanie setTimeout czasami pracuje jako hacky roztworu o odroczenie wykonania przez bardzo krótki czas: http://jsfiddle.net/xzanQ/.

0

można spróbować:

window.location.href=window.location.href 
0

onsubmit zostaje wykonany przed wysłaniem formularza. Jeśli strona jest już rozładowywana, formularz nie może już zostać przesłany.

Spróbuj czegoś takiego:

var myForm=document.getElementById('myForm'); 
myForm.addEventListener('submit',function(event){ 
    event.preventDefault(); 
    this.submit();//Submit the form BEFORE reloading 
    location.reload(true);  
},false); 
0

Właśnie w obliczu podobnego problemnd po debugowania godzinami I okazało się, że; brakowało w moim oświadczeniu onsubmit ..

zmienia:

onsubmit = "location.reload (true)"

Do:

onsubmit = "location.reload (true);"

Naprawiono mój safari na mac problemu ..

Powiązane problemy