Проблема заключалась в том, что jquery-диалоги ищут z-index для целевого элемента (в данном случае текстовой области редактора Ace), прежде чем разрешить событие продолжаться. На момент написания этой статьи они проверяли:
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 );
Есть несколько способов справиться с этим, но я обнаружил, что проще всего было установить z-index для текстовой области Ace на действительно высокое значение. Вот часть CSS, где я сделал это:
ace_uncomplessed.js, начиная с строки 16211.
"\n" +
".ace_editor textarea {\n" +
" position: fixed;\n" +
" z-index: 2000;\n" +