2012-01-13 12 views
0

エスケープキーを押すと、子ウィンドウを閉じたいと思いますが、まず開いているオーバーレイを確認します。オーバーレイが開いていてエスケープキーが押されている場合、私はオーバーレイを閉じたいだけです。ユーザーがエスケープを再度押すと、子ウィンドウを閉じることができます。jQuery - エスケープ時、オーバーレイが開いていない場合はウィンドウを閉じます

したがって、まずオーバーレイが開いているかどうかを確認する必要があります。すべての私のオーバーレイは.simpleOverlayのクラスとクラス.closeOverlayBtnと閉じるボタンを持っているので、私は、そのクラスがそうのように、ウィンドウを閉じる前に、フォーカスがあるかどうかを確認する機能を有していると考えた:

if (e.keyCode == 27) { // "Esc" Key 
    if ($('.simpleOverlay').is(':focus')) { 
     $('.closeOverlayBtn').trigger('click'); 
    } 
    else { 
     window.close(); 
    }  
    return(false); 
} 

しかし、これはあります起きていません!! .trigger行をalert()に置き換えた場合、オーバーレイが閉じて開いていると警告が表示されます。

これは正しいことですか、何か完全に欠けていますか?

答えて

3

これを試してみてください:

if (e.keyCode == 27) { // "Esc" Key 

    if ($('.simpleOverlay').is(':visible')) { 
     $('.closeOverlayBtn').click(); 
    } 
    else { 
     window.close(); 
    }  
    return(false); 
} 
+0

パーフェクト感謝!私は、私が使うことができる他の場所を読んでいます:フォーカスですが何らかの理由で、私の場合ではありません。 Chromeでテストしています。 – TheCarver

+1

恐ろしい! JSFiddleでこれを設定する方法を知る必要はありませんでした。 = D – Jason

+0

なぜ '.preventDefault()'を呼びますか? – nnnnnn

0

使用現代のJS

if (e.key === "Escape") { 
    if ($('.simpleOverlay').is(':visible')) { 
     $('.closeOverlayBtn').click(); 
    } 
    else { 
     window.close(); 
    }  
    return false; 
} 
関連する問題