0

ajax を使用して生成されたポップアップ (単純な div) に含まれる 2 つの JavaScript ファイルがあります。

<script type="text/javascript" src="<?php echo JS ?>pm.js"></script>
<script type="text/javascript" src="<?php echo JS ?>chat.js"></script>

ポップアップを閉じて再度開くと、2 つのファイル内の jQuery バインド関数が 2 回実行されます。

例えば

//connection
    $(document).bind('connect', function() {
            var conn = new Strophe.Connection('my-http-binding-url');
             conn.connect(inbox.data.jid, inbox.data.pass, function(status){
            inbox.connection = conn;
             alert(status)
            });
});

初めてポップアップを開くと、警告メッセージ : 5 が表示されます。これは、正常に接続されたことを意味します。

しかし、ポップアップを閉じて再度開くと、メッセージが2回表示されます...アンロードされていないため、コードが2回実行されると思います。

4

1 に答える 1

2

次の2つの異なる方法で達成できます

  1. Iframe 内でポップアップを開き、ポップアップを閉じるときに Iframe を破棄します
  2. Iframe を使用していない場合は、それらのスクリプト タグを「popup」テンプレートから移動し、「head」または終了 body タグのすぐ上に配置します。

注: 一度読み込まれた JavaScript を削除することはできません。"Firebug" または "Chrome Developer Tool" の [ネットワーク] タブを使用して、javascript が複数回ロードされていないことを確認します。

編集:ajaxが完了した後、動的HTMLにアクセスできます

$.ajax({
   ...,
   ...,
   success: function afterAjax(){
      // Insert dynamic HTML in Document
      // Any jQuery selector/function you can use here
    }
}
于 2013-10-08T15:22:22.317 に答える