1

私はxhtmlページ用に作成したjavascriptでいくつかのadivceのために書いています。私はそれを主にIE、FF、およびchromeで動作させるようにしました(Safariはまだ私にいくつかの悲しみを与えますが、それは別の主題です)。 beforeunloadスクリプトによって情報がリセットされるため、発生したいと考えています。F5を押してもそれはできますが、これも私が望んでいることではありません。現在、FFとChromeは、フォームが送信されたときにその問題を抱えていませんが、理由はわかりません。これが私がこれまでに書いたコードです。

<script type="text/javascript"> 
window.onbeforeunload = function() {
var hiddenBtn = document.getElementById("kioskform:broswerCloseSubmit");
return  hiddenBtn.click();
           }   </script>

これについてどうやって行くのか疑問に思っているだけで、アドバイスをいただければ幸いです。ありがとうございます。

4

2 に答える 2

3

HTMLの隠れた変数を定義します。ユーザーがフォームを送信するときに値を割り当てます。次に、アンロード関数で、その隠れた変数を確認します。値が入力されている場合は、関数を終了します。

<script type="text/javascript"> 
 window.onbeforeunload = function() {
  if (document.getElementById("wasformsubmitted").value != "Y") {
    var hiddenBtn = document.getElementById("kioskform:broswerCloseSubmit");
    return  hiddenBtn.click();
  }
}   
function SetSubmitVariables()
{
 document.getElementById("wasformsubmitted").value = "Y";
 return true;
}
</script>
<body>
  <form ... onsubmit="return SetSubmitVariables();">
    <input type="hidden" id="wasformsubmitted" value="N" />
    ... 
  </form>
</body>
于 2012-09-21T13:06:09.447 に答える
2

フォームを送信するときに、onBeforeUnloadリスナーをウィンドウから削除できます

たとえば、id = "form1"でフォームを送信する場合は、このコードを追加できます。

    document.getElementById('form1').onsubmit = function(){
        window.onbeforeunload=function(){};
    }
于 2012-09-21T13:23:11.590 に答える