問題は、jquery-dialogsが、イベントの続行を許可する前に、ターゲット要素(この場合はAceエディターのtextarea)でz-indexを探すことでした。これを書いている時点で、これは彼らがこのチェックを行う場所です:
jquery.ui.dialog.jsは685行目から始まります。
create: function( dialog ) {
if ( this.instances.length === 0 ) {
...
setTimeout(function() {
// handle $(el).dialog().dialog('close') (see #4065)
if ( $.ui.dialog.overlay.instances.length ) {
$( document ).bind( $.ui.dialog.overlay.events, function( event ) {
// stop events if the z-index of the target is < the z-index of the overlay
// we cannot return true when we don't want to cancel the event (#3523)
// HERE's THE CHECK
if ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {
return false;
}
});
}
}, 1 );
これを処理する方法はいくつかありますが、最も簡単なのは、Aceのtextareaのz-indexを非常に高い値に設定することでした。これが私がこれを行ったCSSの部分です:
16211行目から始まるace_uncomplessed.js。
"\n" +
".ace_editor textarea {\n" +
" position: fixed;\n" +
" z-index: 2000;\n" +