2011-11-09 14 views
6

これは奇妙な疑問ですが、ここになります。私はライトボックスのような大きなフォーマットで写真を表示するページを持っています。 ESCを押すと、私はページを閉じて、通常の形式の写真を示し、彼はから来たページにユーザーを返す:Youtubeビデオでエスケープキーが押されたことを検出する方法は?

$(document).keyup(function(e) { 
if (e.keyCode == 27) { 
    var closeURL = $('.close').attr('href'); 
     window.location = closeURL; 
} 
}); 

しかし、同じライトボックスページにも含まれていてもよいサイドパネルです埋め込まれたYouTube動画。ユーザーは、Youtubeプレーヤーの標準ビデオコントロールを使用して、そのビデオをフルスクリーンに拡大することができます。ユーザーがそのシナリオでESCを押すと、フルスクリーンのビデオが閉じてライトボックスのページに戻ります(標準の埋め込みプレーヤーの動作、つまり私が欲しいものです)。しかし、ESCのキーイベントは、ライトボックスは、この特定のシナリオでは望ましくありません。

私は、この流行がChromeには存在するが、Firefoxでは存在しないことを発見しました。基本的に私が望むのは、YouTubeのプレーヤーを閉じるESCを押してもESCコードがトリガーされないようにすることです。

私はこれらのシナリオを区別するためにevent.targetを探していましたが、運はまだありません。何か案は?

更新:私はこのChrome専用のバグを今受け入れます。しかし、ソリューションにはまだ開いています。

+0

あなたはクロームだけのキー入力で非常に奇妙な動作をするようですので、これは奇妙なものですユーチューブプレーヤー –

+0

パネル保持のためのHTMLを投稿できます。 –

+0

@JohnHartsock私の考えはまさに:)私はそれがiframeで起こったと思ったので、ESCキーが私のイベントをまったくトリガーすることは期待していませんでした。今私は、正しい行動がどんなものになるのか混乱しています。私が知っていることは、イベントがYoutubeから私のページにバブリングしたくないということだけです。 – Ferdy

答えて

1

私はこれが可能になるだろうとは思いません。 Flash Playerは、フォーカスが当たっているときに入力をキャプチャします。たとえば、YouTubeビデオで再生をクリックした後、Ctrl-Wを押してタブを閉じると、ビデオの外のページをクリックしてフォーカスを戻すまで閉じません。ブラウザ。

入力コントロールは、フォーカスが当たっている間に別のプロセス(Flashプレーヤー)に効果的に渡されるため、ユーザーが明示的にコントロールをブラウザに返すまで、入力をキャプチャしたり動作したりすることはできません。

+0

ありがとう、私はそれを説明すると思うが、別のブラウザでは扱いが異なる。 – Ferdy

1

たぶんそのような何かが働くだろう:

$(document).not("iframe").keyup(... 
+0

一緒に考えてくれてありがとう。試してみましたが、そのコードでもう何も起動していないようです。 – Ferdy

1

ジャスト使用して(あなたがあなた自身のフラッシュプレーヤーでユーチューブプレーヤーをラップすることができ... ..(より多くの作業が必要になります)私は、これは少し古いです知っているが、可能な解決策があり、この上

をつまずきましたAPIまたは単純にコンテナ)、フラッシュ内のキー押下を検出します。あなたは、あなたのページをフラッシュするかどうかは関係ありませんので、あなたのフラッシュアプ​​リケーションから直接同じjavascript関数を呼び出すことができます。

0

ビデオの再生状態を検出し、ウィンドウにフォーカスを戻すことで、これを行うことができます。

Youtube APIのFlash Playerは非推奨になったため、IFrame APIを使用する必要があります。

あなたは1 (playing)の状態を検出するonStateChangeイベントを使用して、ちょうど呼び出すことができます。

`$(window).focus()` (jQuery syntax) 

をこれは、あなたがkeyupイベントを使用できるようになります。 focus()コールには、を使用し、documentを使用しないでください。

ここには、ドキュメントのイベントセクションがあります。

https://developers.google.com/youtube/iframe_api_reference#Events

関連する問題