1

それで、仕事用のウェブポータルを作ります。上司は、ユーザーがページから移動した場合、ユーザーをログアウトするように求めています。このチュートリアルを見つけました: http://kbeezie.com/cross-browser-exit-pop/

jquery の例を使用し、いくつかのページに挿入してテストしました。開発にはasp.net/C#を使用しています。私のスクリプトを含む、ページの基本的なレイアウトは次のとおりです。

<%@ Page ... %>
<asp:Content .. > </asp:Content>
<asp:Content .. >

   //my navigate away function
   <script type="text/javascript">
      function PopIt() {
         return "Are you sure you want to leave?";
      }

      $(document).ready(function () {
         window.onbeforeunload = PopIt;
          $("a").click(function () { window.onbeforeunload = null; });
      });
   </script>

   <div>
      <table></table>
      //other stuff
   </div>
</asp:Content>

Web ポータルのリンクをクリックすると、ナビゲート スクリプトが機能しますが、内部リンクをクリックしているためポップアップしません。しかし、サイト内を移動し続けると、最終的に 2、3 回クリックした後、内部リンクをクリックすると、本当に離脱するかどうかを尋ねられます。なぜこれが起こっているのか誰にも教えてもらえますか?

編集: すべてのページで jquery を参照しているため、これは問題ではありません。

編集:これは動作するJSFiddleです。リンクをクリックしても何も起こりませんが、別の場所に移動するとプロンプトが表示されます。

4

2 に答える 2

0

それで、1週間かそこらすべてを試した後、私はあきらめました. 数日後、同僚の 1 人が、継承元の基本クラスの 1 つにスクリプト ブロッカー機能が実行されていることを教えてくれましたOnPreInit

私は長い間、私たちの大きなコードベースのどこかで私のOnBeforeUnload機能が無効になっているのではないかと疑っていましたが、 の使用法を検索してOnBeforeUnloadも何も見つかりませんでした。結局のところ、スクリプト ブロッカーを見つけることができなかったのです。

スクリプト ブロッカーをオーバーライドした後、元のコードは機能しました。

于 2013-10-14T17:32:00.267 に答える