Czy istnieje przewidywalna zależność między narastająco offsetTop
elementu <a>
a wartością scrollTop
po przechodząc do tego <a>
elementu?javascript: różnica między scrollTop i offsetTop
Naiwnie zakładałem, że będą one równe, ale spotkałem się z przypadkami, w których scrollTop
jest większy (pozycja przewijania znajduje się na dole strony).
Poniżej określone pytanie bardziej precyzyjnie:
function TotalOffsetTop (e)
{
var offset = 0;
do
offset += e.offsetTop;
while (e = e.offsetParent);
return offset;
}
//navigate to MyBookmark
location.hash = "#MyBookmark"
var BookmarkOffsetTop = TotalOffsetTop(document.getElementByID("MyBookmark"));
var CurrentPosition = document.getElementsByTagName("body")[0].scrollTop;
if (CurrentPosition != BookmarkOffsetTop) alert("Design Flaw!");
Moim ostatecznym celem jest znalezienie najbliższego <a>
tag, którego początek znajduje się powyżej górnej części bieżącej rzutni. Jest tak, że mogę przeskakiwać do tyłu (i dalej) do zakładek w stosunku do aktualnej pozycji w dokumencie.
Czy są jakieś inne środki, które powinienem stosować zamiast scrollTop
i kumulatywny offsetTop
?
Odkrywam problem za pomocą Chrome, ale chciałbym ostatecznie znaleźć coś, co działa w co najmniej kilku nowoczesnych przeglądarkach. Próbuję unikać jQuery.
+1 za próbę uniknięcia jQuery –
nadzieję, że można przyjąć odpowiedź nie? – Sampath