在iframe的父窗口中显示jQuery prettyPhoto灯箱

时间:2010-02-01 20:54:34

标签: jquery iframe parent

我知道此问题已经讨论过,但我似乎无法让它发挥作用。我有一个带有iframe的主HTML页面。我正在使用jQuery prettyphoto,当我点击iframe中的链接时,我想知道如何在父窗口中显示灯箱?

母版页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Master Page</title>
</head>

<body>
 <iframe src="iframe.html" width="300" height="300px" frameborder="0"></iframe>
</body>
</html>

iFrame页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>iframe</title>

<style type="text/css" media="screen">
 @import url("assets/css/infotech-iframes.css");
 @import url("assets/css/infotech-popup.css");
</style>

<script src="assets/js/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="assets/js/jquery.popup.js" type="text/javascript" charset="utf-8"></script>

</head>

<body>
 <a href="assets/images/screenshots/campaign-setup-lg.png" rel="prettyPhoto[gallery]"><img src="assets/images/screenshots/campaign-setup-sm.gif" /></a>
<script type="text/javascript" charset="utf-8">
 $(document).ready(function(){
    $("a[rel^='prettyPhoto']").prettyPhoto();
 });
    </script>
</body>
</html>

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

CalebD的答案是正确的(请参阅帖子了解更多详情)。但是,为了能够访问iFrame的父级中的API,您必须在父级中添加以下初始化代码,以便其中的任何一个都能正常工作

$.fn.prettyPhoto({ social_tools: false });

答案 1 :(得分:1)

这仅在父框架和子框架的域相同时才有效。

您需要在父框架中加载必要的JavaScript。然后在iframe中尝试这样的事情:

$(document).ready(function(){
    $('a').click(function(){
        window.parent.$.prettyPhoto.open($(this).attr('src'), $(this).attr('title'), $(this).children('img').attr('alt'));
        return false;
    });
});

您可能需要将$('a')选择器更改为其他内容。我不认为你应该在链接上加rel,因为你可能会在父和iframe中打开漂亮的照片。

这应该都是理论上的。我还没有测试过。