Autor | Zpráva | ||
---|---|---|---|
Fuxoft Profil |
Dobrý den,
mám problém, který se projevuje pouze v MSIE a pouze uvnitř iFrame. Zde je jednoduchý webchat: http://fuxoft.cz/fffilm/ffchat/index.htm Zde je tentýž webchat uvnitř iFramu: http://fuxoft.cz/fffilm/ffchat/test_iframe.htm Chat je realizován jako stránka s 50 řádky, která je pomocí JS automaticky odscrollována tak, aby byly vždy vidět ty nejposlednější z nich (a pole pro vkládání textu, které je úplně dole). To vše pomocí následující funkce: var div=document.getElementById("ffchat"); div.scrollTop = div.scrollHeight - div.offsetHeight; Toto funguje v Chromu i ve Firefoxu. V MSIE to ale funguje pouze na samostatné stránce, kdežto uvnitř iFrame to nefunguje (stránka neodscrolluje, takže místo posledních příspěvků a input fieldu vidím nejstarší příspěvky). |
||
Davex Profil |
#2 · Zasláno: 10. 2. 2013, 13:44:52
Zkus to takhle: Scroll-down problém.
|
||
Jan Kupka Profil |
#3 · Zasláno: 10. 2. 2013, 14:27:33
Fuxoft:
Dobrý den, zkusil bych řádně nadefinovat DOCTYPE, aby to prohlížeče neházelo do Quirks módu. |
||
Fuxoft Profil |
#4 · Zasláno: 10. 2. 2013, 14:56:31 · Upravil/a: Fuxoft
Ted si uvedomuju, ze scrollovani okna vlastne nemuze pomoci. Ja totiz potrebuju odscrollovat ten vnitrni div element, nikoliv okno... V ostatnich browserech to funguje, v MSIE nikoliv...
Jan Kupka: Netuším co tam napsat. Mám Linux a pro MSIE jsem nikdy stránky nedělal. |
||
Jan Kupka Profil |
#5 · Zasláno: 10. 2. 2013, 15:16:49
Fuxoft:
Před značku <html> dejte <!DOCTYPE html> (jedná se o HTML5 Doctype, díky kterému prohlížeče stránky vykreslí ve standardním režimu). Výsledná struktura tedy bude:
<!DOCTYPE html> <html> <head> </head> <body> </body> </html> |
||
Fuxoft Profil |
#6 · Zasláno: 10. 2. 2013, 19:09:08
Jan Kupka:
Tak ne, nevidím změnu... |
||
_es Profil |
#7 · Zasláno: 11. 2. 2013, 09:49:29
Fuxoft:
„problém, který se projevuje pouze v MSIE“ V akej verzii IE? V IE8 to funguje. Riešenie spomenuté v [#2] si skúšal? Alebo môžeš skúsiť scrollIntoView. |
||
Jan Kupka Profil |
#8 · Zasláno: 11. 2. 2013, 10:49:23
Fuxoft:
Změna nastala, v IE se už správně zobrazuje obsah iframe a to, že se stránka vykresluje ve standardním režimu, ovlivňuje např. hodnoty, které JS vrací při zjišťování různých vlastností, souvisejících s rozměry prvků. K logice scrollování - díval jsem se do kódu, který na stránce používáte: var div=document.getElementById("ffchat"); div.scrollTop = div.scrollHeight - div.offsetHeight; ve funkci scrollDown vám k ničemu nepomůže. Element #ffchat se automaticky roztahuje na výšku podle obsahu a jelikož nemá nastavenou vlastnost overflow na scroll nebo auto , nikdy se u něj nebude zobrazovat scrollbar. Přiřazování hodnoty k vlastnosti scrollTop tak nemůže nic dělat (navíc do ní pokaždé přiřazujete hodnotu 0).
Pokud tedy chcete, aby stránka byla neustále odscrollovaná až dolů, musíte se zaměřit na scrollování celého dokumentu v iframe. Můžete toho docílit např. voláním fce: window.scrollTo(x,y); kde x je v tomto případě 0 (horizontálně scrollovat nechcete) a y je výška stránky. Cross-browser verze pro zjištění výšky stránky může být např.: var doc = window.document, html = doc.documentElement, pageHeight = Math.max(doc.body.scrollHeight, doc.body.offsetHeight, html.scrollHeight, html.offsetHeight, html.clientHeight); Vše ostatní ve fci scrollDown je zbytečné. |
||
Časová prodleva: 11 let
|
0