2012-10-23 67 views
1

我使用的是jQuery Lightbox Evolution插件,并且在iframe中有照片链接。我想要在父窗口中打开一个iframe外部的Lightbox。jQuery Lightbox Evolution:在iframe外部加载lightbox

在FAQ中,我发现我可以把一些代码在父:

<script type="text/javascript"> 
    function frameload(iframe) { 
    var doc = iframe.contentWindow || iframe.contentDocument; 
    if (doc.document) { doc = doc.document; }; 

    $('.lightbox', doc.body).lightbox(); 
    }; 
</script> 

但不工作,因为内联生成我的代码,动态的用PHP。所以我不会'初始化'头部标签中的插件,只需在代码中调用它即可。

有我的一段代码初始化插件:

echo 
'<a style="cursor:pointer;" id="open_'.$emp_alias.'"></a>'; 

echo 
'<script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#open_'.$emp_alias.'").click(function(ev) { 
     $.lightbox(['; 
     while($images_array = mysql_fetch_assoc($query_emp_images)) { 
    echo '"/destaques/'.$images_array['path'].'",'; 
    } 
    echo 
     ']); 
    ev.preventDefault(); 
    });          }); 
</script>'; 

有一种方法在父窗口加载呢?

感谢

回答

2

这是在文档中:

9.How我可以在父窗口中打开灯箱从iframe中? 您需要做的第一件事是在您的父窗口中安装脚本,但不要初始化它。不要使用jQuery(document).ready,而是添加以下代码:

<script type="text/javascript"> 
function frameload(iframe) { 
    var doc = iframe.contentWindow || iframe.contentDocument; 
    if (doc.document) { doc = doc.document; }; 

    jQuery('.lightbox', doc.body).lightbox(); 
}; 
</script> 

Insert onload =“frameload(this);”在你的iframe标记中。

<iframe src="iframe_child.html" onload="frameload(this);" width="500" height="500"> </iframe> 

当您在子页面中单击图像时,灯箱将显示在您的父页面中。请记住要删除您的子页面中的脚本以避免任何问题。

0

简单的解决方法是为我工作是在父窗口初始化收藏夹,然后创建一个空白占位符的链接,并且改变了href和点击占位符链接功能:

页眉或页脚父窗口:

<script type="text/javascript"> 
    $(function() { 
    $('.lightbox').lightBox(); 
    }); 

    function image_preview(url) 
    { 
    $('#fakebox').attr('href',url); 
    $('#fakebox').trigger('click') 
    } 
</script> 

某处在父窗口的身体:

<a href="" class="lightbox" id="fakebox"></a> 

所以在iframe我调用父功能推出fancybox:

<a href="JavaScript:void(0);" class="btn btn-tertiary btn-small" onClick="parent.image_preview('http://static8.depositphotos.com/1007989/1011/i/950/depositphotos_10118078-Grinning-Smiley.jpg')">Preview</a>