2011-02-03 3 views
0

私のasp.netページでptTimeSelectコントロールを使用しています。私はonbeforeunloadイベントを処理し、ユーザーがページを離れる前にメッセージを表示するいくつかのjavascript/jqueryを持っています。しかし、TimeSelectコントロールはまた、onbeforeunloadイベントをトリガーするように見えます(IE 8では、Firefoxとは違うと思います)。これにより、ユーザーが実際にページを離れることがないときにページを離れることに関する混乱するポップアップが発生します。jqueryクリックするたびにbeforebeforeunloadの時間ピッカートリガーを選択します。

これを引き起こしているのは誰でも考えられますか? Time Selectコントロールをクリックしたときにイベントが発生するのを止めることはできますが、ユーザーが実際にページを離れるときにはどのように起動するのですか?

これはコントロールです: http://pttimeselect.sourceforge.net/doc/files/jquery-ptTimeSelect-js.html

答えて

1

私は、このスタックオーバーフローの投稿に解決策を見つけた:

Internet Explorer calling window.onbeforeunload on window.open and AJAX calls

問題はIEでページ上の任意のリンクが発射されていることであるようですそれが同じページへのリンクでない限り、クリックされたときにオンロードされます。

各リンクのonclickイベントに「return false」を追加する(ptTimeSelectコントロールの要素のほとんどは、javascriptを起動するリンクですが、どこにも移動しません)。プロジェクトでptTimeSelect.jsファイルを実際に変更したくないので、jQuery経由でリンクにonclickイベントコードを添付しました。私のページ(Time Selectコントロールインスタンスがあるページ)に置くコードを次に示します。

  $('a.ptTimeSelectHr').click(function (e) { 
       return false; 
      }); 

      $('a.ptTimeSelectMin').click(function (e) { 
       return false; 
      }); 

      $('a.ptTimeSelectHrAmPmCntr').click(function (e) { 
       return false; 
      }); 

      $('#ptTimeSelectCloseCntr').children('a').click(function (e) { 
       return false; 
      }); 

      $('#ptTimeSelectSetButton').children('a').click(function (e) { 
       return false; 
      }); 
関連する問題