Toon posts:

[JS] onResize op een frame

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Mijn CMS bestaat uit twee frames, het menu-frame en het body-frame. Wanneer het menu-frame wordt resized (allebei dus eigenlijk), wil ik graag dat de pagina zich herlaadt en via een querystring de nieuwe breedte doorgeeft, om zo deze breedte op te slaan. Zo heeft elke user zijn eigen ideale menu-breedte.

Het probleem is echter, dat de browser (in ieder geval IE, en daar gaat het in dit geval om) elke keer dat de breedte ook maar 1 pixel verschuift, de onResize handler aanroept. Resultaat: menu'tje gaat refreshen als een beest.

Heb via de search onResizeEnd gevonden, maar dat werkt helaas alleen met absolute positioned items op je page zelf, zoals plaatjes/tabellen/etc, en dus niet met de browser of het document.

Nu kan ik kiezen voor een wat minder net alternatief, bijvoorbeeld een timertje die na de laatste keer dat de onResize handler is aangeroepen, een X aantal seconden wacht voordat hij de pagina herlaadt.

Maar goed, ik zou geen Bas heten als dat voldoende voor me was. Ik ben een vreselijke mierenneuker, en heb geen nachtrust voordat ik hier een nette oplossing voor gevonden heb. Ik ben erachter gekomen dat het niet zo makkelijk is om hier een mooie workaround voor te verzinnen.

Of ik ben gewoon vreselijk stom.

Iemand ideeën?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Oei, sorry. Even niet opgelet.

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Ik denk toch dat je aan die timer-oplossing kan gaan werken.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 15:50

Johnny

ondergewaardeerde internetguru

Zou je niet met onresize kunnen werken, en dan een functie aanroepen die de staat van de muisknop opvraagt, en pas als deze niet meer ingedrukt is dat dan het menu refreshed?

Dit is een idee om 2:37, dus het kan ook niet kloppen, ik ga nu slapen.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Verwijderd

Topicstarter
Ik heb het inmiddels op een iets andere manier opgelost, waarvan ik in eerste instantie dacht dat het niet zou gaan werken:

Aan de frameset tag van de index.php heb ik het volgende toegevoegd: onMouseUp="saveWindowSize();"

De functie saveWindowSize() ziet er als volgt uit:

code:
1
2
3
4
function saveWindowSize() {
  menuWidth = window.menu.document.body.clientWidth;
  window.menu.location.href = 'menu.php?wwidth=' + menuWidth;
}


Ik heb overal op geklikt, maar de onMouseUp die in de <frameset> staat, wordt alleen getriggered wanneer je met die verticale frameborder aan de haal gaat. Precies wat ik wil dus.

Ik weet niet of deze oplossing ook in Netscape, Opera of andere browsers gaat werken. Ik heb er namelijk zo m'n twijfels over of een onMouseUp in <frameset> volgens W3C mag. Heb ik ook niet geprobeerd in andere browsers, want het is een CMS, en ik ga er geen moeite voor doen om het in elke browser werkend te krijgen.

Uiteindelijk best een simpele oplossing :)

Thanks voor de reply's!
Pagina: 1