Доступ к текущему URL с использованием прототипа - PullRequest
0 голосов
/ 14 апреля 2010

вслед за Райаном Бейтсом Screencast # 114 Я пытаюсь создать бесконечные страницы, используя прототип. В отличие от витрины Райана, мой URL, вызываемый по запросу AJAX, обрабатывается динамически, потому что я не всегда вызываю один и тот же URL, когда пользователь достигает конца моей страницы.

Так что мой JS, работающий в фоновом режиме, выглядит так и использует document.location.href вместо фиксированного URL:

var currentPage = 1;

function checkScroll() {
  if (nearBottomOfPage()) {
    currentPage++;
    new Ajax.Request(document.location.href + '?page=' + currentPage, {asynchronous:true, evalScripts:true, method:'get'});
  }
  else {
    setTimeout("checkScroll()", 250);
  }
}

function nearBottomOfPage() {
  return scrollDistanceFromBottom() < 10;
}

function scrollDistanceFromBottom(argument) {
  return pageHeight() - (window.pageYOffset + self.innerHeight);
}

function pageHeight() {
  return Math.max(document.body.scrollHeight, document.body.offsetHeight);
}

document.observe('dom:loaded', checkScroll);

Вопрос в том, что код работает в Safari, но не работает в FF 3.6. Кажется, что FF рассчитывает scrollHeight или offsetHeight по-разному. Как я могу предотвратить это?

Спасибо заранее. Jason

1 Ответ

0 голосов
/ 14 апреля 2010

Я не использовал их сам, но я предполагаю, что pageHeight () может использовать document.viewport.getHeight () , что должно быть более точной альтернативой / кросс-браузерной альтернативой.

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