いくつかの問題:
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" });*/
});