Расширение XUL/Firefox: определение положения прокрутки главного окна

Я разрабатываю боковую панель Firefox, которая взаимодействует с главным окном браузера. Когда кнопка на боковой панели нажата, мне нужно иметь возможность определить, как далеко пользователь прокрутил текущую страницу.

У кого-нибудь есть идеи? Никак не могу найти подходящую комбинацию.


person user332849    schedule 04.05.2010    source источник


Ответы (2)


Нашел ответ для всех, кто может его искать:

window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIWebNavigation)
  .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
  .rootTreeItem.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIDOMWindow)
  .gBrowser.selectedBrowser.contentWindow.scrollY
person user332849    schedule 07.05.2010

Я думаю, что атрибуты scrollTop и scrollHeight должны вам помочь. Вы можете комбинировать его с атрибутом clientHeight.

Псевдокод:

scrollPercent = 100
if(clientHeight <= scrollHeight) {
    scrollPercent = (scrollTop / (scrollHeight - clientHeight)) * 100
}
person lithorus    schedule 06.05.2010
comment
Следующее вернет мне высоту клиента: getInterface(Components.interfaces.nsIDOMWindow) .gBrowser.selectedBrowser.clientHeight Однако вызов scrollHeight для одного и того же объекта всегда возвращает значение, равное clientHeight, а вызов scrollTop всегда возвращает 0. Приносим извинения за форматирование:/ - person user332849; 07.05.2010