Откройте Fancybox3 из iFrame на родительской странице - PullRequest
0 голосов
/ 20 мая 2019

Извините, но я не понимаю ответ Яниса на этой странице Откройте fancybox 3 в родительском элементе iframe , это слишком технически для меня, поскольку не дает точного ответа.

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

Как получить доступ и управлять fancybox в родительском окне изнутри iframe:

// Close current fancybox instance
parent.jQuery.fancybox.getInstance().close();

// Adjust iframe height according to the contents
parent.jQuery.fancybox.getInstance().update();

ОК, чтобы закрыть или обновить родительское окно, но как открыть различные ссылки в родительском окне?

Тогда Янис говорит:

Это должно дать вам подсказку, что вы можете использовать parent.jQuery.fancybox для использования API с родительской страницы.

Но как «сформулировать» это? в скрипте?

Затем, раздел API должен дать вам подсказку, как программно открывать галерею изображений:

$.fancybox.open([
    {
        src  : '1_b.jpg',
        opts : {
            caption : 'First caption',
            thumb   : '1_s.jpg'
        }
    },
    {
        src  : '2_b.jpg',
        opts : {
            caption : 'Second caption',
            thumb   : '2_s.jpg'
        }
    }
], {
    loop : false
});

Значит ли это, что вы должны составить список всех изображений, которые вы хотите открыть на родительской странице, в одном сценарии? Если это так, то это не имеет смысла, когда у вас много изображений, и побеждает цель сделать каждую ссылку вызывающей fancybox по отдельности, например так:

<a href="images1.jpg" data-fancybox data-caption="image 1">
<img src="images/image1_sm.jpg"  alt="" class="image"/></a>

Или это означает, что вам нужно создать скрипт для каждой картинки, которую вы хотите открыть на родительской странице?

1 Ответ

0 голосов
/ 20 мая 2019

Вот фрагмент, который откроет галерею изображений на текущей странице или на родительской странице:

var $fb_links = $('[data-fancybox="images"]');

$fb_links.click(function() {

    if ( window.self !== window.top ) {

        window.parent.jQuery.fancybox.open( $fb_links, {
            //animationEffect : 'fade',
            hash : false
        }, $fb_links.index( this ) );

    } else {
        $.fancybox.open( $fb_links, {}, $fb_links.index( this ) );
    }

    return false;

});

Надеюсь, вы видите, что не так страшно создать собственное событие click, которое запускает скрипт.

...