Alternativní scrollIntoView() pro IE
Javascriptová funkce scrollIntoView() používaná pro zobrazení (posunutí) elementu, který je vnořen v elementu, jenž má nastaveno overflow: auto nebo overlow: scroll, nemusí vždy v Internet Exploreru fungovat správně a je třeba si vytvořít vlastní funkci nebo nejlépe použít jQuery ScrollTo plug-in.
Aktualizováno:
Pokud můžete použít jQuery, doporučuji ignorovat níže uvedený
postup a použít jQuery
ScrollTo Plug-in, který umí scrollování relativní, na absolutní pozici
i k určitému elementu – všechno můžete vidět v demu.
Původní návod
Jak jsem zjistil, za určitých okolností javascriptová funkce scrollitoview()
nefunguje v Internet Exploreru podle očekávání.
Vytvořil jsem si tak funkci, která funguje v IE. Protože nefunguje
v Mozilla-based prohlížečích, musíme nejdříve identifikovat
prohlížeč a volat příslušnou funkci – pro Mozilla-based běžnou
scrollintoview() a pro IE vlastní funkcí
scrollIntoViewIE(focusToId).
function scrollIntoViewIE(focusToId){
var element=document.getElementById(focusToId);
var container=document.getElementById("containerId");
var scrollAmount=element.offsetTop-container.clientHeight+element.offsetHeight;
if(container.scrollTop<scrollAmount){
container.scrollTop=scrollAmount;
};
}
Funkce scrollIntoViewIE má jako argument id prvku, který má být
„fokusovaný“. V těle funkce je napevno zadáno id elementu
containerId, který je vůči elementu, který má být
„fokusován“ rodičovský (takový element má tedy obvykle
nastaveno pomocí CSS overflow: scroll nebo overflow:
auto.