如何实现Fancybox在iFrame外部弹出

时间:2016-07-08 06:34:38

标签: javascript jquery html iframe fancybox

我有一个包含iframe的小脚本。 在那个i帧中,我有一个图像配置通过Fancybox在iframe外面弹出。

当我尝试在图像链接上实现that fancybox option时(请参阅右侧的iframe第2页)以弹出iframe的外部并将其上传到我的服务器 - 它工作得很好。

见这里:My site

但是,当我尝试在独立版本上完成这项工作时(意味着,我希望该功能仅适用于我的计算机上的html文件),我没有得到任何响应,也没有任何反应。

我想我错过了js和css转发部分,但我很确定我已经添加并将所有js和css转发到正确的位置。我真的不知道它为什么不起作用。

我需要的是像这样弹出的图像:

enter image description here

但是,再一次,独立脚本中没有任何事情发生。

以下是主页代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="Jose Francisco Diaz / picssel.com" />
<title>call fancybox from an iframe in the parent page</title>
<link rel="stylesheet" type="text/css" href="fancybox2.0.4/jquery.fancybox.css" />
<link rel="stylesheet" type="text/css" href="fancybox2.0.4/helpers/jquery.fancybox-buttons.css" />

<script type="text/javascript" src="fancybox2.0.4/helpers/helper.js" id="zZwx_MainScript"></script>
    <link rel="stylesheet" href="fancybox2.0.4/helpers/helper.css" type="text/css" media="all" />

<style type="text/css">
a {outline: 0 none;}
#wrap {
width: 978px;
height: 1000px;
margin: 20px auto;
}
#iframe01 {
width: 450px;
height: 300px;
float: left;
}
#iframe02 {
width: 450px;
height: 300px;
float: right;
}
.spacer {
clear: both;
height: 1px;
display: block;
}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="fancybox2.0.4/jquery.fancybox.js"></script>
<script type="text/javascript" src="fancybox2.0.4/helpers/jquery.fancybox-buttons.js"></script>
</head>
<body>
<div id="wrap">

    <iframe id="iframe01" src="../pages/7.html"></iframe>
    <iframe id="iframe02" src="iframedPage02_20apr12.html"></iframe>
    <div class="spacer"></div>

</div><!--wrap-->
</body> 
</html>

这是 iframe页面代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="fancybox2.0.4/jquery.fancybox.css" />
<link rel="stylesheet" type="text/css" href="fancybox2.0.4/helpers/jquery.fancybox-buttons.css" />

<script type="text/javascript" src="fancybox2.0.4/helpers/helper.js" id="zZwx_MainScript"></script>
    <link rel="stylesheet" href="fancybox2.0.4/helpers/helper.css" type="text/css" media="all" />

<style type="text/css">
#wrap { width: 100%;}
a {outline: 0 none;}
</style>
<script src="jquery.js"></script>
<script type="text/javascript" src="fancybox2.0.4/jquery.fancybox.js"></script>
<script type="text/javascript" src="fancybox2.0.4/helpers/jquery.fancybox-buttons.js"></script>

<script>
/* <![CDATA[ */
$(document).ready(function() {
    $('.imagen').click(function(e){
        e.preventDefault();
parent.$.fancybox([
{href:'img/ebay-home.jpg', title: '01'},
],{
//          href: this.href,
            helpers: {
                overlay: {
                opacity: 0.3
                } // overlay
                //, buttons: {}
            } // helpers
        }); // fancybox
    }); // click
    $('.video').click(function(e){
        e.preventDefault();
        parent.$.fancybox({
            href: this.href,
            width: 560,
            height: 315,
            type: 'iframe',
            helpers: {
                overlay: {
                opacity: 0.3
                } // overlay
            } // helpers
        }); // fancybox
    }); // click
$(".pdf").click(function(){
parent.$.fancybox({
type: 'html',
autoSize: false,
content: '<embed src="'+this.href+'#nameddest=self&page=1&view=FitH,0&zoom=80,0,0" type="application/pdf" height="99%" width="100%" />',
beforeClose: function() {
$(".fancybox-inner").unwrap();
},
            helpers: {
                overlay: {
                opacity: 0.3
                } // overlay
            }
}); //fancybox
return false;
}); //click 
}); // ready
/* ]]> */
</script>
</head>
<body>
<div id="wrap">
    <p>Hello, I am the iframed page 02.</p>
    <p>Open different type of content (imagen, video and/or pdf) in fancybox outside the iframe in the parent page.</p><br />
    <a class="imagen" href="img/ebay-home.jpg">open image gallery</a><br />
    <a class="video" href="http://www.youtube.com/embed/3l8MwU0IjMI?autoplay=1">open youtube video</a><br />
 <a class="pdf" href="images/Fancybox.pdf">open pdf</a>
</div>
</body> 
</html>

这里又是一个活的:My site

2 个答案:

答案 0 :(得分:0)

尝试在Firefox浏览器中运行独立页面,并尝试从Apache(localhost)运行您的页面。它会工作。

答案 1 :(得分:0)

我需要的只是在iframe之外的工作图片弹出窗口。

我找到了解决问题的方法,但另一方面:

PureCSS完整教程

enter image description here

这是一个实时链接:Here

这是一个已配置的JSfiddle

这是html:

       <!-- Lightbox usage markup -->
<section id="gallery">
    <!-- thumbnail image wrapped in a link -->
    <section class="item">
        <a href="#img1">
          <img src="http://oi67.tinypic.com/23lblu8.jpg">
        </a>
    </section>

</section>

<!-- lightbox container hidden with CSS -->
<div class="lightbox" id="img1">
  <div class="box">
    <a class="close" href="#">X</a>
    <p class="title">Lorem ipsum dolor sit amet</p>
    <div class="content">
        <img class="imgbox" src="http://oi67.tinypic.com/23lblu8.jpg"> 
        <p class="desc">Lorem ipsum dolor sit amet desc fully</p>
    </div>

    <div class="clear"></div>
  </div>
</div> 

这是css:

#gallery {
    width:600px;
    }

#gallery a {
    text-decoration:none;
    }

#gallery .item {
    width: 350px; height: 300px; overflow:hidden;
    border: 4px solid #333;

    margin: 5px;
    margin-right: -20px;
    }


#gallery .item a { 
    overflow: hidden;
    }

#gallery .item a img {
    height: 100%; 
    align-self: center;
    }

.lightbox {
    /** Hide the lightbox */
    display: none;


    /** Apply basic lightbox styling */
    position: fixed;
    z-index: 9999;
    width: 95%;
    height: 75%;
    top: 0;
    left: 0;
    color:#333333;
    }

.lightbox:target {
    /** Show lightbox when it is target */
    display: block;
    outline: none;
}

.lightbox .box {
    width: -webkit-min-content;
    width: -moz-min-content;
    width: min-content;
    min-width:500px;
    margin: 0 auto;
    padding:10px 20px 10px 20px;
    background-color:#FFF;
    box-shadow: 0px 1px 26px -3px #777777; 
    }

.lightbox .title {
    margin:0;
    padding:0 0 10px 0px;
    border-bottom:1px #ccc solid;
    font-size:22px;
    }

.lightbox .content {
    display:block;
    position:relative;
    }

.imgbox {max-width: 830px; }


.lightbox .content .desc {
    z-index:99;
    bottom:0;
    position:absolute;
    padding:10px;
    margin:0 0 4px 0;
    background:rgba(0,0,0,0.8);

    color:#fff;
    font-size:17px;
    opacity:0;
    transition: opacity ease-in-out 0.5s;
    }   

.lightbox .content:hover .desc  {
    opacity:1;
}

.lightbox .next,
.lightbox .prev,
.lightbox .close {
    display:block;
    text-decoration:none;
    font-family:Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size:22px;
    color:#858585;
    }

.prev {
    float:left;
    }

.next, .close {
    float:right;
    }

    .clear {
        display:block;
        clear:both;
        }

现在我可以在iframe之外弹出图片了。

无需服务器端。