1

我知道这个问题之前已经讨论过,但我似乎无法让它发挥作用。我有一个带有 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>

感谢您提供的任何帮助。

4

2 回答 2

2

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

$.fn.prettyPhoto({ social_tools: false });
于 2012-09-17T19:05:58.643 回答
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 中打开漂亮的照片。

这在理论上都应该有效。我还没有测试过。

于 2010-02-01T21:06:59.297 回答