2012-03-05 68 views
6

Safari/Chromeでは、自分のウェブサイトのフォームが正しく機能していません。ユーザーがフォームを送信すると、新しいタブが開きますが、元のページ(フォームがあるページ)をリロードします。 IE、Opera、Firefoxで動作します。safari/chrome onsubmit = "location.reload(true)"が機能しない

コード:)(

  • window.location.reload;

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

    Iのような他のJavaScript機能を試し

  • document.location.reload();
  • window.location.replace( 'http://www.websiteurl.com');
  • window.location.href = 'http://www.websiteurl.com';
  • これらの他のバリエーション。

私はおそらく、onsubmit = ""動作していないと思っていましたが、onsubmit = "alert( 'test')を試してみたところ、Safari/Chromeの両方でうまくいきました。

また、フォームが投稿するsearch.phpページで、ユーザーがURLを使用してページに直接アクセスし、フォームを送信しない場合、bodyタグが次のように読み込まれるように設定しています。

​​3210

Safari/Chromeを搭載しているすべてのブラウザで使用できます。

ここでは何が起こっていますか?!?!

ありがとうございます!

+0

それが定期的に動作しない理由を私は知らないが、 'setTimeout'ハックは動作します:http://jsfiddle.net/xzanQ/。 – pimvdb

+0

新しいタブも開きますか? – j08691

+0

私はすべてのバウワーでリロードしても同じような問題を抱えていますが(フォームリロードのコンテキストではありませんが)、最終的には以下のようになります:window.location = window.location; –

答えて

4

を、それはあなたのための解決策だったので:http://jsfiddle.net/xzanQ/setTimeoutを使用して

は、時には非常に短い時間のための実行を延期することにより、ハックソリューションとして機能します。

0

あなたが試みることができる:

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

onsubmitは、フォームが転記される前に実行されます。ページが既にアンロードされている場合は、フォームはもう送信されません。

ような何か試してみてください:私はちょうど私がいることが分かった時間のデバッグ後に同様のproblemndに直面した

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

を。

へ "(真)location.reload"

をonSubmit =:..私のonSubmit文で

チェンジングがありませんでした

をonSubmit = "location.reload(真の);"

MAC問題に関する私のサファリを修正

..

関連する問題