jquery (fancyzoom) открытый элемент родительского фрейма - PullRequest
0 голосов
/ 12 ноября 2009

Я стараюсь делать что-то, что я даже не уверен, что это возможно.

используя ссылку в iframe на странице, я хочу открыть поле родительского элемента fancyzoom (чтобы оно не закрывалось краями рамки). Я предполагаю, что div содержимого fancyzoom box должен находиться в родительском объекте, но я не могу открыть его там. Я добавил код fancyzoom только для родителей, только для детей, родителей и детей, но безрезультатно. Я попытался вызвать родительский фрейм из дочернего, добавив .parent до и в коде, но безрезультатно.

Есть идеи?

Вот (текущее прерванное) состояние родительской страницы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

<title>iframe zoom test</title>
<link href="nstyle.css" rel="stylesheet" type="text/css" />

<!--
  jQuery library
-->
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

<!--
  fancyzoom 
-->
<script type="text/javascript" src="fancyzoom.min.js"></script>
  <script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
   $('#medium_box_link').fancyZoom({width:400, height:300});
  });
 </script>
 </head>
<body> 

<a href="#medium_box" id="medium_box_link">Alaska</a> 
<div id="medium_box">
 <h2>All about Alaska</h2>
 <p><strong>Here is some info about my time in Alaska</strong> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus vitae risus vitae lorem iaculis placerat. Aliquam sit amet felis. Etiam  congue. Donec risus risus, pretium ac, tincidunt eu, tempor eu, quam. Morbi blandit mollis magna. Suspendisse eu tortor. Donec vitae felis nec ligula blandit rhoncus.</p>
</div>
<iframe src="iframetest.html" width="85" height="700" scrolling="no" FRAMEBORDER="0" name="frame" />

</body>
</html>

а вот дочерний фрейм:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

 <title>iframe zoom test</title>
 <link href="nstyle.css" rel="stylesheet" type="text/css" />
<!--
  jQuery library
-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<!--
  fancyzoom 
-->

<script type="text/javascript" src="fancyzoom.min.js"></script>
  <script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
   $('#medium_box_link').fancyZoom({width:400, height:300});
  });
</script>
</head><body><a href="#medium_box" id="medium_box_link"'>Alaska</a>
<div id="medium_box">
 <h2>All about Alaska</h2>
 <p><strong>Here is some info about my time in Alaska</strong> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus vitae risus vitae lorem iaculis placerat. Aliquam sit amet felis. Etiam  congue. Donec risus risus, pretium ac, tincidunt eu, tempor eu, quam. Morbi blandit mollis magna. Suspendisse eu tortor. Donec vitae felis nec ligula blandit rhoncus.</p>
</div>
</body>
</html>

Я попытался изменить

$('#medium_box_link').fancyZoom({width:400, height:300});

будет

window.parent$('#medium_box_link').fancyZoom({width:400, height:300});

или даже

$('#medium_box_link',window.parent).fancyZoom({width:400, height:300});

но безрезультатно. Возможно ли то, что я пытаюсь сделать?

Заранее спасибо за любую помощь или указатели!

Ответы [ 2 ]

0 голосов
/ 17 ноября 2009

Никто, похоже, не смог сделать эту работу, поэтому я перешел на другое решение с помощью floatbox ( здесь ). Хотя это стоит 20 баксов, он делает именно то, что мне нужно, с минимумом хлопот. Масштабирование работает с любого элемента внутри или снаружи iframe, с большим количеством опций и плавно.

0 голосов
/ 13 ноября 2009

Основной синтаксис для вызова функции в родительском окне: window.parent.function.

Однако я не уверен, оценивается ли родительская функция, которую вы вызываете, в исходном контексте или в контексте окна дочернего фрейма. В прошлом у меня были проблемы с вызовом функций $ () между кадрами.

Если у вас все еще есть проблемы, попробуйте создать функцию-обертку в родительском окне следующим образом:

function initZoom() {
    $('#medium_box_link').fancyZoom({width:400, height:300});
}

И затем вызов этой оболочки из дочернего фрейма:

window.parent.initZoom();

Это может заставить его. В противном случае вы могли бы попробовать что-то вроде следующего:

$(window.parent).children('#medium_box_link').fancyZoom({width:400, height:300});

Но у меня есть чувство, которое все еще может исчезать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...