iframe content hoogte, buiten de flow

Pagina: 1
Acties:

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 09-02 10:42

Clay

cookie erbij?

Topicstarter
Oude vraag ja, maar toch net ff anders.
Met iets als onderstaande:

JavaScript:
1
2
3
4
function getDocumentHeight() {
   var body = document.body;
   return body? (body.scrollHeight || body.offsetHeight) : 0;
}


... stuur ik de hoogte van de content in een iframe door om dat frame te resizen alsof het er niet is. Serverside Includes of divs met overlow zijn inderdaad beter ja, maar dat is allemaal geen optie.

Het probleem waar ik tegen aan loop is dat de body in dit geval absolute gepositioneerde uitklappers bevat die, wanneer uitgeklapt, onder de body uitsteken. Zoals het hoort maken die geen deel uit van de flow, maar als zodanig wordt de hoogte natuurlijk ook niet meegerekend in de scroll- of offsetHeight van de body.

Browsers zijn universeel wel in staat die hoogte te scrollen, maar op kunnen vragen ho maar :{

Op het moment check ik dus op offsetHeight en opgetelde offsetTop om te kijken of een element onder de body uitsteekt, maar dat is niet echt de meest elegante manier. Is deze hoogte ueberhaupt ergens makkelijk op te vragen?

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • user109731
  • Registratie: Maart 2004
  • Niet online
Dit lijkt te werken hier:
JavaScript:
1
alert(document.getElementsByTagName('html')[0].scrollHeight);


edit: zonder doctype niet

[ Voor 11% gewijzigd door user109731 op 25-09-2006 22:06 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

En dit dan:
JavaScript:
1
document.documentElement.offsetHeight;

Of FF only:
JavaScript:
1
document.defaultView.getComputedStyle(document.documentElement,null).getPropertyValue("height");

[ Voor 48% gewijzigd door André op 25-09-2006 22:18 ]


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 09-02 10:42

Clay

cookie erbij?

Topicstarter
Grote prutser schreef op maandag 25 september 2006 @ 22:03:
Dit lijkt te werken hier:
JavaScript:
1
alert(document.getElementsByTagName('html')[0].scrollHeight);


edit: zonder doctype niet
In firefox ja. In IE geeft dat de gewone flow height, en html.offsetHeight geeft de hoogte van het iframe, alletwee niet wat ik zoek helaas.
André schreef op maandag 25 september 2006 @ 22:16:
En dit dan:
JavaScript:
1
document.documentElement.offsetHeight;

Of FF only:
JavaScript:
1
document.defaultView.getComputedStyle(document.documentElement,null).getPropertyValue("height");
argh, ook die geven respectievelijk frame height en flow height ;(

ik heb ook echt al heel veel geprobeerd :P

[ Voor 83% gewijzigd door Clay op 25-09-2006 22:26 ]

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • user109731
  • Registratie: Maart 2004
  • Niet online
Bij mij niet dus. Je hebt het toch over deze situatie: :?

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<title>test</title>
<script type="text/javascript">
window.onload = function() {
    alert(document.getElementsByTagName('html')[0].scrollHeight);
}
</script>
<style type="text/css">
    #test {
        position:absolute;
        height:4000px; width:500px;
        top:20px; left:100px;
        border:1px solid navy;
    }
</style>
test
<div id="test">test</div>

Dit geeft bij mij zowel in IE als in FF een alert met waarde 4022...

Maar goed, zal wel aan mijn testcase liggen dan... :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

Dan denk ik haast dat je aan een collision-detectie script vast zit wat alle coordinaten moet gaan checken :X

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 09-02 10:42

Clay

cookie erbij?

Topicstarter
Grote prutser schreef op maandag 25 september 2006 @ 22:29:
Bij mij niet dus. Je hebt het toch over deze situatie: :?

[tsjak]

Maar goed, zal wel aan mijn testcase liggen dan... :)
Vet, dit werkt inderdaad, maar het absolute element mag geen relative parent hebben, dan werkt het meteen niet meer.

En laat ik dat nou net wel nodig hebben :P

Hmz, In firefox werken er dus 2 properties; de scrollHeight van de html node en van documentElement. Opera doet het daarnaast ook nog met body.scrollHeight. In IE werken geen van de 9 cobinaties die er te maken zijn van body, html, documentElement, met offset- scroll- en clientHeight :( IE7 heb ik ff niet bij de hand.
André schreef op maandag 25 september 2006 @ 22:29:
Dan denk ik haast dat je aan een collision-detectie script vast zit wat alle coordinaten moet gaan checken :X
Dat is mn angst dus ook ja.

[ Voor 41% gewijzigd door Clay op 25-09-2006 22:53 ]

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin

Pagina: 1