Safari / chrome onsubmit = "location.reload (true)" ne fonctionne pas

Un formulaire sur mon site Web ne fonctionne pas correctement dans Safari / Chrome. Lorsqu'un utilisateur soumet le formulaire, il ouvre un nouvel onglet, mais je souhaite que la page d'origine (page avec le formulaire sur elle) soit rechargée. Il fonctionne dans IE, Opera et Firefox.

Le code:

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

J'ai essayé d'autres fonctions javascript comme:

  • Window.location.reload ();
  • Document.location.reload ();
  • Window.location.replace ('http://www.websiteurl.com');
  • Window.location.href = 'http: //www.websiteurl.com';
  • Et d'autres variations de celles-ci.

Je pensais que c'était l'onsubmit = "" qui ne fonctionnait pas, mais lorsque j'ai essayé onsubmit = "alert ('test')", ça a bien fonctionné dans Safari / Chrome.

En outre, sur la page search.php sur laquelle le formulaire se publie, si un utilisateur va directement à la page en utilisant l'url et ne soumet pas le formulaire, je l'ai configuré pour que l'étiquette du corps se charge comme suit:

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

Qui fonctionne sur tous les navigateurs incluant Safari / Chrome.

Qu'est-ce qui se passe ici?!?!

Merci!

Comme c'était la solution pour vous:

L'utilisation de setTimeout fonctionne parfois comme une solution de piratage en reportant l'exécution pour un temps très court: http://jsfiddle.net/xzanQ/ .

Tu pourrais essayer:

 window.location.href=window.location.href 

onsubmit est exécuté avant qu'un formulaire ne soit publié. Si une page est déjà déchargée, le formulaire peut ne plus être envoyé.

Essayez quelque chose comme:

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

Je me suis juste confronté à un problème similaire et après avoir débogué pendant des heures, j'ai découvert que a; Manquait dans mon relevé d'inscription.

En changeant:

Onsubmit = "location.reload (true)"

À:

Onsubmit = "location.reload (true);"

Correction de mon safari sur Mac Problem ..