ColorBox - предотвратить закрытие

Я хочу предотвратить случайное закрытие окна с цветом, поэтому я буду показывать/скрывать кнопку закрытия внутри загруженного iframe.

Я прочитал документацию, но оба примера не работают:

var originalClose = $.colorbox.close;
$.colorbox.close = function(){
    var response;
    if($('#cboxLoadedContent').find('form').length > 0){
        response = confirm('Do you want to close this window?');
        if(!response){
            return; // Do nothing.
        }
    }
    originalClose();
};

or

<!-- calling colorbox's close method from within an iframe: -->
<a href='#' onclick='parent.$.colorbox.close(); return false;'>close this iframe</a>

... colorbox просто не закрывается. Что я делаю неправильно?

в консоли вижу:

Uncaught TypeError: Cannot read property 'colorbox' of undefined 

Спасибо!


person eozzy    schedule 02.02.2013    source источник


Ответы (3)


Вам нужно включить colorbox.css и jquery.colorbox.js после библиотеки jquery.

Ваш первый пример переопределяет функцию colorbox close, а второй пример просто закрывает colorbox.

$('#cboxLoadedContent').find('form')

В моем примере у меня нет form, поэтому я удаляю селектор form.

Демонстрация: http://jsfiddle.net/BY3ZK/

Colorbox — это просто div, а не iframe, поэтому я удаляю parent отсюда:

parent.$.colorbox.close();

Демонстрация: http://jsfiddle.net/BY3ZK/1/

person webdeveloper    schedule 02.02.2013
comment
В том-то и дело, что работает нормально, но не из iframe. - person eozzy; 02.02.2013
comment
iframe @Nimbuz из того же домена? - person webdeveloper; 02.02.2013
comment
Нет, внешний домен. Я имею в виду, что контент из другого домена загружается в iframe. - person eozzy; 02.02.2013
comment
@Nimbuz Ваш код с parent действителен для доступа из iframe, но политика безопасности браузера была изменена. Я получаю это: stackoverflow. com/questions/6690598/ - person webdeveloper; 02.02.2013

Должен быть:

parent.$('#yourElement').colorbox.close();

Где yourElement будет идентификатором/селектором iframe, содержащего поле цвета.

person axel.michel    schedule 02.02.2013
comment
iframe, содержащий лайтбокс? Это лайтбокс, содержащий iframe, а iframe не имеет идентификатора. - person eozzy; 02.02.2013

Попробуйте использовать $('#cboxClose').remove(); чтобы закрыть окно цвета

person Rahul Singh    schedule 12.09.2013
comment
вместо того, чтобы добавлять всегда, вы можете пометить найденные вами дубликаты. - person bummi; 12.09.2013