Firefox iframe滚动问题

时间:2011-01-01 23:54:27

标签: javascript firefox iframe scroll

我有一个托管在iframe中的网页。我只能修改此页面,而不能修改包含页面。

默认情况下,我的页面滚动条被禁用,但是如果我的页面大小超过某个阈值,我需要能够打开垂直滚动条。以下代码似乎适用于所有浏览器,但Firefox:

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

function setScrollbar() {
    if (getDocHeight() > 5000) {
        pageBody.style.overflow = 'scroll';
    }
}

这是我的HTML:

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head><title>My title</title></head>
    <body id="pageBody" onload="setScrollbar();">
    </body>
</html>

Firefox似乎忽略了style.overflow ='scroll'。我做了很多搜索,似乎无法找到解决方案。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

替换它:

pageBody.style.overflow = 'scroll';

用这个:

document.getElementById('pageBody').style.overflow = 'scroll';

当我在FF中检查你的代码时我得到了JS错误pageBody未定义,这应该可以解决问题:)

干杯

-G。

答案 1 :(得分:0)

style.overflow = 'auto'应该会更好。它使浏览器决定何时自己添加滚动条。

答案 2 :(得分:0)

不幸的是,Firefox会根据框架上的溢出样式显示框架主体上的滚动条,而不是在主体上。因此,最简单的方法是插入100%大小的无边框可滚动子帧,并在其中加载实际内容。

如果您不想这样做,那么您可以使用这样的嵌套DIV:

<body style="margin: 0px;"> <!-- override default body margin -->
  <div style="height: 100%; overflow: auto;"> <!-- The actual scrollable area -->
    <div style="margin: 8px;"> <!-- to emulate default body margin -->
      <!-- Content goes here -->
    </div>
  </div>
</body>