[JavaScript] Pop-up resize script

Pagina: 1
Acties:

  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
Ik heb een script geschreven dat van een geopende pop-up de afmetingen aanpast aan de afmetingen van de content. De content word in een DIV geplaatst met een "content" id, aan het eind van de pagina word het script utigevoerd dat de DIV meet en de afmetingen van de pagina er aan aanpast.

Dit werkt allemaal best goed, alleen nu is het probleem dat het script soms niet uitgevoerd word en de pop-up dus niet van formaat veranderd (en er dus gescrolled moet worden, wat niet gewenst is bij pagina's die niet groter zijn als de beeldschermresolutie van de gebruiker). Ik ben niet zo'n held in JavaScript want ik werk er nog maar pas een paar weken mee, maar ik denk dat het eraan ligt dat de content nog niet helemaal gerenderd is op het moment dat het script uitgevoerd word.

Zo ziet de pop-up eruit:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
<head>
<script type="text/javascript">
function resize_window() {
    hoogte = document.getElementById('content').offsetHeight;
    hoogte_user = screen.height - 100;
    if (hoogte < hoogte_user) {
        window.resizeTo(500, hoogte + 100);
    } else {
        window.resizeTo(500, hoogte_user);
    }
}
</script>
</head>

<body>
<div id="content">
De content van het pop-upje.
</div>
</body>
</html>

<script>
resize_window();
</script>

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

offtopic:
Ik KAN geen oplossing bedenken met dat icoon van jou :/ Ik moetttt me connnncceennntrreeerren :P



Je moet ervoor zorgen dat je functie pas wordt aangeroepen als de pagina klaar is met laden. Dat kan op 2 manieren:

JavaScript:
1
2
  window.onload = resize_window;
</script>

Of met:
JavaScript:
1
2
3
4
5
6
7
8
9
<script type="text/javascript" defer>
    hoogte = document.getElementById('content').offsetHeight;
    hoogte_user = screen.height - 100;
    if (hoogte < hoogte_user) {
        window.resizeTo(500, hoogte + 100);
    } else {
        window.resizeTo(500, hoogte_user);
    }
</script>


Optie 2 hoeft dan geen functie te zijn, omdat het script pas wordt uitgevoerd na een load van de pagina. Ik vind optie 1 persoonlijk mooier :)

[ Voor 75% gewijzigd door BtM909 op 23-11-2004 11:26 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
Ik heb deze beide oplossingen al geprobeerd, want deze waren ook na een zoektocht op google en GoT aan bod gekomen. Maar beide werken ze niet goed. Ik heb inmiddels deze regel ook toegevoegd, maar nog blijft het probleem zich heel soms voor doen:

JavaScript:
1
<body onLoad="javascript: resize_window();">


offtopic:
Ik heb al meerdere reacties op mijn icoon gehad. Toch fijn dat iedereen hem leuk vind :P

[ Voor 53% gewijzigd door Barracuda_82 op 23-11-2004 11:30 ]


Verwijderd

Wordt de hele functie niet uigevoerd of wordt in de gevallen waarop het lijkt alsof de functie niet wordt gerunt de offsetHeight niet gevonden? Weleens met een alert() bekeken of er altijd een offsetHeight wordt gevonden? En of de functie wordt gerunt?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

JavaScript:
1
<body onload="resize_window()">

Let ff op de kleine aanpassingen ;) en window.onload is hetzelfde als body onload.

En heb je dit probleem alleen in IE of ook in Mozilla / Firefox.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
BtM909 schreef op dinsdag 23 november 2004 @ 11:33:
JavaScript:
1
<body onload="resize_window()">

Let ff op de kleine aanpassingen ;) en window.onload is hetzelfde als body onload.

En heb je dit probleem alleen in IE of ook in Mozilla / Firefox.
In beide browsers, maar in IE komt het vaker voor als in andere browsers. Natuurlijk omdat dit zo'n geweldig hoogstaand technisch programma is. :/

Ik heb nog niet getest met een alert, maar het probleem is ook dat de fout zich maar soms voor doet. Dus ik kan dadelijk gaan klikken tot ik een ons weeg en een keer een alert krijg. Hmm.

Verwijderd

Is er geen verband te vinden met de hoeveelheid content en het 'uitvallen' van de functie?

  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
Verwijderd schreef op dinsdag 23 november 2004 @ 12:59:
Is er geen verband te vinden met de hoeveelheid content en het 'uitvallen' van de functie?
Nee, soms zijn het de pop-ups met veel content, en soms zijn het de pop-ups van maar een paar regels. Het is lastig dat ik het probleem niet kan simuleren om zo te onderzoeken waar het precies aan ligt. Ik heb al veel verschillende dingen geprobeerd, waar onder ook veel en weinig content, maar er is niks waarbij dit probleem vaker voorkomt als anders. Ik heb nu de afgelopen uren al niks meer gemerkt, maar ik hoor af en toe nog steeds collega's roepen dat er een pop-up niet goed weergegeven word.
Pagina: 1