Deprecated: Function set_magic_quotes_runtime() is deprecated in /mnt/data/accounts/w/webmark/data/www/blog/textpattern/lib/txplib_db.php on line 14
Alternativní scrollIntoView() pro IE :: Blog v pavučině
Blog v pavučině je mrtev. Ať žije nový blog Všeho s Mírou
Skočit na obsah Skočit na menu Skočit na vyhledávání

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.