Проблема с прокруткой в ​​Firefox - PullRequest
2 голосов
/ 02 января 2011

У меня есть веб-страница, размещенная в 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 голосов
/ 02 января 2011

style.overflow = 'auto' должно работать лучше.Браузер сам решает, когда добавлять полосы прокрутки.

0 голосов
/ 19 января 2011

К сожалению, 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>
0 голосов
/ 02 января 2011

Заменить это:

pageBody.style.overflow = 'scroll';

с этим:

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

Когда я проверил ваш код в FF, я получил сообщение об ошибке JS. Не определено тело, которое должно решить проблему:)

Приветствия

G.

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