У меня была похожая ситуация, и это было мое решение:
В ключе / значениях для fancyBox я добавил модал. Модал отключит навигацию и закрытие. После того, как лайтбокс открывается полностью, я говорю ему вызвать функцию ( enableFancyboxConfirmClose ). Эта функция добавляет все необходимые элементы div и кнопки. По сути, я добавляю пользовательскую кнопку закрытия, которая позволяет мне вызывать мою собственную функцию.
$(".fancybox").fancybox({
maxWidth : 829,
maxHeight : 600,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
closeClick : true,
openEffect : 'fade',
closeEffect : 'fade',
modal : true,
afterShow : function() { enableFancyboxConfirmClose() }
});
Код jQuery для кнопок
function enableFancyboxConfirmClose () {
$(".fancybox-wrap").append('<div title="Close" class="fancybox-close fancybox-custom-close-btn"></div><div class="fancybox-confirm fancybox-opened"><span style="padding:20px;">Closing this window will clear your entire form, are you sure you want to leave?</span><button class="fancybox-custom-close-confirm">Yes</button> <button class="fancybox-custom-close-cancel">No</button></div>');
$('.fancybox-custom-close-btn').click(function() {
$(this).fadeOut();
$('.fancybox-confirm').fadeIn();
});
$('.fancybox-custom-close-confirm').click(function() {
$(".fancybox-confirm").fadeOut();
$.fancybox.close();
});
$('.fancybox-custom-close-cancel').click(function() {
$(".fancybox-confirm").fadeOut();
$(".fancybox-close").fadeIn();
});
}
CSS
.fancybox-confirm {
position: relative;
margin-top: 10px;
width: 100%;
height: 18px;
background-color: #FC0;
font-size:14px;
padding: 10px 0;
color: #444;
text-shadow: none;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
display:none;
}
.fancybox-custom-close-confirm, .fancybox-custom-close-cancel {
height: 20px;
float:right;
font-size:13px;
margin-right: 10px;
padding: 0 5px;
cursor:pointer;
}
Это не совсем элегантное решение. Но это делает работу для меня.