0

いくつかの問題:

1) このスクリプトをより効率的に実行しようとしています。

2) ユーザーがいずれかのポップアウト ボタンをクリックすると、ウィンドウが開き、要素が非表示になります。(現在、埋め込みビデオ プレーヤーを削除するために .detach() を使用しています。これは、Firefox では .toggle() がプレーヤーを非表示にするだけで、オーディオの再生を維持するためです。これを行うより良い方法はありますか?

3) 理論的には、ボタンをもう一度クリックするか、ウィンドウを手動で閉じることにより、要素の非表示または .toggle() を解除する必要がありますが、detach() によりビデオ プレーヤーは解除されません。

4) ユーザーがウィンドウをポップアウトした場合、手動でウィンドウを閉じてから再度ポップアウトして、もう一度ウィンドウを閉じるだけで、要素は .toggle() に戻りません。

http://www.mst3k.tv/で動作を確認してください

$(document).ready(function() {
  $('#lights').click(function(){$('#darkness').fadeToggle(500);});
  $("#lights").toggle(function(){$("#lights").attr('id','lightsoff');},function(){$("#lightsoff").attr('id','lights');});
  /**VIDEO**/
  var videoWin;
  $('#video-toggle').click(function(){
      $('#video').fadeToggle(500);
      $('#video').detach();
      });
  $('#video-toggle').click(function(){
      if (videoWin && !videoWin.closed) {
        videoWin.close();
        return false;
      }
      videoWin = window.open(
        $(this).attr('rel'),
        'videoWin',
        'width=600,height=480,toolbar=0,top=0,left=0,menubar=0,location=0,status=0,scrollbars=0,resizable=1');
      return false;
      }
    );
  var watchVideo = setInterval(function() {
      if (videoWin.closed) {clearTimeout(watchVideo);$('#video').show(500)}
      return false;
   }, 1);
  /**CHAT**/
  var chatWin;
  $('#chat-toggle').click(function(){
      $('#chat').fadeToggle(500);
      /*$('#chat').detach();*/
      });
  $('#chat-toggle').click(function(){
      if (chatWin && !chatWin.closed) {
        chatWin.close();
        return false;
      }
      chatWin = window.open(
        $(this).attr('rel'),
        'chatWin',
        'width=320,height=480,toolbar=0,top=0,left=601,menubar=0,location=0,status=0,scrollbars=0,resizable=1');
      return false;
      }
    );
  var watchChat = setInterval(function() {
      if (chatWin.closed) {clearTimeout(watchChat);$('#chat').show(500)}
      return false;
   }, 1);
  /*$("a.btn").fitText(1.2, { minFontSize: "6px", maxFontSize: "14px" });*/
});
4

2 に答える 2

3

コード用の jQuery プラグインを作成して再利用し、DRY を回避できるようにすることをお勧めします。以下にいくつかのオプションを示します。

プラグイン 1: jQuery popupWindow

プラグイン 2: jQuery winPop

また、closedプロパティは W3C 仕様の一部ではありませんが、ブラウザー間でサポートされる可能性があることに注意してください。

于 2013-03-13T02:51:14.397 に答える