jQuery / javascript - центрируйте div в области просмотра iframe. scrollTop не точный с отрегулированной высотой iframe - PullRequest
0 голосов
/ 12 августа 2010

нормально, обычно это будет легко, но по визуальным причинам я заставляю свой iframe иметь такую ​​же высоту, как и содержимое, которое он содержит.Это дает мне только одну полосу прокрутки, полосу прокрутки в родительском окне.Документ iframe никогда не прокручивается.Проблема возникает, когда я пытаюсь центрировать div внутри iframe.Когда страница прокручивается на пару страниц вниз, я не могу получить точное значение прокрутки.$ (window) .scrollTop () всегда равно нулю.Если я использую parent.document.documentElement.scrollTop вместо $ (window) .scrollTop (), я получаю значение, но оно полностью готово к обеду.Например, если высота iframe - 2011, и я прокручиваю до нижней части iframe, и я запрашиваю parent.document.documentElement.scrollTop, я получаю возвращенное значение 567Мой размер экрана 1200

Одинаковые результаты во всех браузерах.Протестировано последнее IE, FF, Opera, Chrome.

Для имитации

in outerdoc.htm I have 

<iframe id="myFrame" src="doc1.htm"></iframe>

doc1.htm:

<html>
<head>
<title>my title</title>
</head>
<body>
<p> 10 pages of content near the bottom <div onclick="CenterDiv($('#myDiv'))">show div</div></P>
<div id="myDiv"></div>
  <script type="text/javascript" language="javascript">
        $(document).ready(function()
    {
        $('#myFrame', top.document).height($(document).height()); //sets height of frame to document within

    });
      function CenterDiv(item)
      {
         var mtop = ($(window).height() / 2 - item.height() / 2) + $(top.window).scrollTop());
     item.css('top', mtop < 0 ? 0 : mtop );      
      }
  </script>
</body>
</html>

1 Ответ

0 голосов
/ 13 августа 2010

Я не мог решить эту проблему, но я решил написать, что я сделал, чтобы обойти это. Я поместил нужный div по центру на странице, которая содержит iframe, а также функцию centerdiv. Затем в моем коде внутри iframe я сделал следующее.

function CenterDiv(item)
{
if (window.location != window.parent.location) parent.CenterDiv(item);      
}
...