如何在页面加载时将iframe滚动到底部?

时间:2011-06-11 13:43:58

标签: jquery iframe

我就像在网上的每一个问题,尝试像50差异方法,首先我试图滚动div - 然后当它没有工作,我试图iframe文件与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 个答案:

答案 0 :(得分:14)

使用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
});

答案 1 :(得分:6)

如果您可以访问iframe内容的源代码,一个简单的方法是添加&lt; a name ='end'&gt;&amp; nbsp; (或您内容的最后一行)&lt; / a&gt; (不确定您是否真的需要&lt; a&gt;标记中的任何内容。)

将#end添加到iframe源,例如

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

它会自动滚动到最后,不需要javascript / jquery

答案 2 :(得分:1)

如果当前文档已准备就绪,这意味着DOM已准备就绪,但iframe中的文档也必须加载。

<script type="text/javascript">
$(document).ready(function() {
  $("#frame").load(function(){this.contentWindow.scrollBy(0,100000)});
});
</script>