在 Fancybox 中合并“从 iframe 在父级中打开”、“侧面标题”和“自定义标题”

Posted

技术标签:

【中文标题】在 Fancybox 中合并“从 iframe 在父级中打开”、“侧面标题”和“自定义标题”【英文标题】:Merging 'open in a parent from iframe', 'title on side' and 'customising title' in Fancybox 【发布时间】:2017-10-02 03:39:37 【问题描述】:

我想在 iframe 的父页面中打开 Fancybox,标题在右侧,并为我的图片使用标题和描述。

我设法使这三个想法与这些示例分开工作:

Open iframe in parent

Title on right

Custom title using a title and img alt

但是,我在合并这三个代码时遇到了问题。我正在使用 Fancybox 2.1.7。

在阅读了大量关于 iframe 和回调的父级的帖子后,我意识到我的问题可能是我需要使用的回调 - beforeShow 和 afterLoad - 在 iframe 的父级中不起作用。

我最终找到了这段代码,试图加入我放入 iframe 页面的“parent-from-iframe”和“title-on-right”:

$(document).ready(function () 
    $(".fancybox").click(function (e) 
        e.preventDefault();
        parent.$.fancybox(
            // $(".fancybox").fancybox(
            href: this.href,
            helpers: 
                title: null
            ,
            beforeShow: function () 
                var html = '<span>' + this.title + '</span>';
                $('.fancybox-sidebar').append(html);
            ,
            tpl: 
                wrap: '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"><div class="fancybox-sidebar"></div></div></div></div></div>'
            ,
        ); // fancybox
    ); // click
); // ready

parent.$.fancybox($(".fancybox").fancybox(this.href 的组合使beforeShow 完全停止工作。但是当 $(".fancybox").fancybox( 未注释时,beforeShow 按预期工作。当我使用 parent.$.fancybox(this.href 未注释时,我的图片会在父页面中打开。

如何在父页面中调用 beforeShow 和 afterLoad(来自 title-and-description 代码)?

我试过了:

$(document).ready(function () 
    $(".fancybox").click(function (e) 
        e.preventDefault();
        parent.$.fancybox(
            //$(".fancybox").fancybox(
            href: this.href,
            title: this.title,
            helpers: 
                title: null
            ,
            parent.$.fancybox.click(function () 
                afterLoad: function () 
                    var title = this.title ? this.title : " ";
                    var alt = $(this.element).find('img').attr('alt') ? $(this.element).find('img').attr('alt') : " ";
                    this.title = '<h3>' + title + '</h3>' + alt + '<br />';
                
            ); //closes parent afterLoad
            beforeShow: function () 
                parent.$.fancybox.ready(function () 
                    var html = '<span>' + this.title + '</span>';
                    $('.fancybox-sidebar').append(html);
                ); // closes parent beforeShow
            , //closes parent beforeShow
            tpl: 
                parent.$.fancybox.ready(function () 
                    wrap: '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"><div class="fancybox-sidebar"></div></div></div></div></div>'
                ); //closes parent tpl
            , //closes tpl
        ); // fancybox
    ); // click
); // ready

但它没有用。我是初学者,我想我知道需要做什么,但我不知道该怎么做。

这是一个本地主机项目。我在这里读到有人说这可能是个问题,但是由于所有三个代码都对我来说完美,所以我希望它不会是......

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

问题似乎出在这里:

helpers: 
        title: null
    ,
parent.$.fancybox.click(function()  <------ what is this ?
    afterLoad: function () 

您必须传递一个包含选项及其值的对象。

顺便说一句,我认为任何现代代码编辑器都会出现这种语法错误。

【讨论】:

谢谢,我会调查的。我用记事本++

以上是关于在 Fancybox 中合并“从 iframe 在父级中打开”、“侧面标题”和“自定义标题”的主要内容,如果未能解决你的问题,请参考以下文章

PDF 文档不会在移动设备中的 fancybox 中打开,所以当我在这些设备中单击打开 PDF 时,我不想打开一个空白的 fancybox

为fancybox链接分配多个组名

在 Fancybox 和 Owl Carousel 中发出打开图像

Fancybox iframe 动态调整大小

JQuery:Fancybox 在 Google 地图中不起作用

在 Fancybox jQuery 中打开 YouTube 视频