Как прокрутить iframe вниз при загрузке страницы? - PullRequest
6 голосов
/ 11 июня 2011

Я был похож на каждый вопрос по этому поводу в сети, пробовал как 50 различных методов, сначала я пытался прокрутить div - потом, когда он не работал, я пытался встроить файл в div и прокрутить iframe. ничего не работает!

Посмотрите на последний скрипт, который я настроил:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var t = 100; //arbitrary time in ms
$("#frame").animate({ scrollTop: $("#frame").height()}, t);
});
</script>

<center><iframe id="frame" src="xxx.php" frameborder="0" width="630px" height="500px"></iframe></center>

Я пробовал #frame и frame без (#), как с (document) .ready, так и без него. Ничто не работает на странице, и это сводит меня с ума.

Спасибо. :)

Ответы [ 3 ]

13 голосов
/ 11 июня 2011

С jQuery вам нужно использовать .contents(), чтобы получить доступ ко всему, что находится внутри iframe.Вам также необходимо использовать либо событие загрузки окна, либо событие готовности документа iframe.

$(window).load(function ()
{
    var $contents = $('#frame').contents();
    $contents.scrollTop($contents.height());
});

Демонстрация: http://jsbin.com/ujuci5/2


Я бы рекомендовал вернуться к структуре div.Вы упомянули, так как это звучит так, как будто вы пытаетесь сделать, не требует iframe.Вы обнаружите, что работать с div намного проще, чем с iframe.

$(function ()
{
  var $mydiv = $('#mydiv');
  $mydiv.scrollTop($mydiv.height());
});

Демонстрация: http://jsbin.com/ujusa4/2


как мне запуститьФункция прокрутки, например, через 3 секунды после загрузки страницы?

Использовать setTimeout.

$(window).load(function ()
{
    setTimeout(function ()
    {
        var $contents = $('#frame').contents();
        $contents.scrollTop($contents.height());
    }, 3000); // ms = 3 sec
});
6 голосов
/ 07 февраля 2013

Если у вас есть доступ к исходному коду содержимого iframe, можно легко добавить & nbsp; (или последняя строка вашего контента) (не уверен, действительно ли вам что-то нужно в теге ).

Добавьте #end к источнику iframe, например,

http://www.yourdomain.com/file.php#end

и он будет автоматически прокручиваться до конца, никакой javascript / jquery не требуется

1 голос
/ 11 июня 2011

Если текущий документ готов, это означает, что DOM готов, но документ внутри iframe также должен быть загружен.

<script type="text/javascript">
$(document).ready(function() {
  $("#frame").load(function(){this.contentWindow.scrollBy(0,100000)});
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...