отображать лайтбокс JQuery prettyPhoto в родительском окне из iframe - PullRequest
1 голос
/ 01 февраля 2010

Я знаю, что этот вопрос уже обсуждался, но я не могу заставить его работать. У меня есть главная страница HTML с iframe. Я использую 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 ]

2 голосов
/ 17 сентября 2012

CalebD ответ правильный (см. Сообщение для более подробной информации). Однако чтобы иметь доступ к API в родительском элементе iFrame, необходимо добавить следующий код инициализации в родительский элемент, чтобы все это работало

$.fn.prettyPhoto({ social_tools: false });
1 голос
/ 02 февраля 2010

Это будет работать только в том случае, если домен для родительского и дочернего фреймов совпадает.

Вам необходимо загрузить необходимый 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.

Это все должно работать в теории. Я не проверял это.

...