从iframe在父窗口中将jQuery显示到lightbox

从iframe在父窗口中将jQuery显示到lightbox,jquery,iframe,parent,Jquery,Iframe,Parent,我知道这个问题以前已经讨论过了,但我似乎无法让它发挥作用。我有一个带有iframe的主HTML页面。我正在使用jQuery,我想知道当我单击iframe中的链接时,如何让lightbox显示在父窗口中 母版页: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

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

母版页:

<!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>
<!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>

母版页
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>
<!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>

iframe
@导入url(“assets/css/infotech iframes.css”);
@导入url(“assets/css/infotech popup.css”);
$(文档).ready(函数(){
$([rel^='prettypto']);
});


感谢您提供的帮助。

仅当父帧和子帧的域相同时,此操作才有效

您需要在父框架中加载必要的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中看到漂亮的照片


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

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

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

您好,我尝试了您的建议,但仍然得到相同的结果,即在iframe中而不是在父页面中显示lightbox。你还有什么建议吗。谢谢有JavaScript错误吗?是否从标记中删除了rel属性?如果您手动调用父帧作为测试,那么它是否可以从父帧开始工作?您使用的是最新版本的pretty photo吗?