Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] onScroll event aan select box hangen

Pagina: 1
Acties:

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Ik zit met het volgende probleem (voorbeeld code staat onderaan dit bericht).

Ik heb een select box (met attribuut multiple). Ik heb meer opties dan dat de select box hoog is, dus ik krijg netjes een verticale scrollbar. Nu wil ik graag een onScroll event aan mijn select box hangen. In Firefox werkt dit netjes, in IE helaas niet. Weet iemand of IE dit uberhaubt ondersteunt?
Microsoft (http://msdn2.microsoft.com/en-us/library/ms536966.aspx en http://msdn2.microsoft.com/en-us/library/ms535893.aspx) zegt van niet, dus dat schept niet veel hoop.

Kent iemand het bestaan van een alternatieve manier om een onScroll event aan een select te hangen? De onPropertyChange wordt niet afgevuurd bij een scroll, dus dat lukt helaas niet.


HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>
<select style="height:100px" multiple onscroll="alert('scroll');">
<option>hiep1</option>
<option>hiep2</option>
<option>hiep3</option>
<option>hiep4</option>
<option>hiep5</option>
<option>hiep6</option>
<option>hiep7</option>
<option>hiep8</option>
<option>hiep9</option>
<option>hiep10</option>
</body>
</html>


oeps....deze had in Webdesign, Markup & Clientside Scripting geplaatst moeten worden.

[ Voor 3% gewijzigd door KabouterSuper op 17-08-2007 12:35 ]

When life gives you lemons, start a battery factory


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Psstttt...casing is important.

Goed. Dat was een hoop geblaat. Ik krijg hier netjes een alert met IE7.0.5730.11, ongeacht de casing van 'onScroll='

[ Voor 80% gewijzigd door Crayne op 17-08-2007 13:50 ]

Mijn Library Thing catalogus


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
klopt....xhtml schrijft lowercase voor! Daarbij zijn event handler namen case-insensitive wanneer ze gebruikt worden als html tag attributen. Maar ik weet dat historisch gezien het altijd geschreven wordt als onScroll....dus ik neem je niets kwalijk ;)

Just for the record: ook met een hoofdletter werkt het niet.

Edit: te laat.

[ Voor 22% gewijzigd door KabouterSuper op 17-08-2007 14:01 ]

When life gives you lemons, start a battery factory


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Waar test je mee dan, want zoals ik al zei: in IE7 krijg ik netjes je alert.

Mijn Library Thing catalogus


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
IE 6.0.2800.1106 met W2000. Blijkbaar werkt het in IE7 wel.

When life gives you lemons, start a battery factory


  • remco_k
  • Registratie: April 2002
  • Laatst online: 08:28

remco_k

een cassettebandje was genoeg

Los van je probleem ben ik wel een beetje benieuwd wat je wilt bereiken in het onscroll event?

Alles kan stuk.


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Dat kan ik wel kort uitleggen.....ik heb een select met tussen de 100 en 7500 opties. Deze wordt client-side gevuld. Dit vullen kan nogal lang duren (vooral IE heeft hier moeite mee), dus ik probeer alleen de opties te vullen die de gebruiker ziet (zo'n 30 opties). Gevolg is wel dat als de gebruiker scrollt, dat ik dan afhankelijk van de nieuwe scrollpositie de opties moet vullen. Hier wilde ik dus een onScroll event voor gebruiken.

When life gives you lemons, start a battery factory


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Is het niet beter om te kijken of je de opties kunt groeperen en zo verspreiden over meerdere selects? Of is dat simpelweg niet relevant?

Ik zou in ieder geval niet vrolijk worden van 100-7500 opties als gebruiker. :p

[ Voor 23% gewijzigd door Crayne op 17-08-2007 14:24 ]

Mijn Library Thing catalogus


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Sowieso moet ik iets bouwen om het overzichtelijk te houden. Maar ik wilde eerst een manier om de opties pas te vullen als de gebruiker ze nodig heeft.

When life gives you lemons, start a battery factory


  • Cartman!
  • Registratie: April 2000
  • Niet online
Kun je niet beter een filter tool maken? Input met de zoektekst en dan haal je met javascript (ajax) de resultaten op.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:48

Janoz

Moderator Devschuur®

!litemod

KabouterSuper schreef op vrijdag 17 augustus 2007 @ 14:11:
Dat kan ik wel kort uitleggen.....ik heb een select met tussen de 100 en 7500 opties. Deze wordt client-side gevuld. Dit vullen kan nogal lang duren (vooral IE heeft hier moeite mee), dus ik probeer alleen de opties te vullen die de gebruiker ziet (zo'n 30 opties). Gevolg is wel dat als de gebruiker scrollt, dat ik dan afhankelijk van de nieuwe scrollpositie de opties moet vullen. Hier wilde ik dus een onScroll event voor gebruiken.
Als er alleen de opties inkomen die zichtbaar zijn dan komt er ook geen scrollbalk. Daarnaast zal de scrollbalk ook niet een juiste weergave van de werkelijkheid geven omdat je niet ziet op welk plek je van de honderden opties zit.

Ikzelf zou inderdaad eerder voor een verdere opsplitsing of een text search (vergelijk de google sugest) opteren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

KabouterSuper schreef op vrijdag 17 augustus 2007 @ 12:25:
oeps....deze had in Webdesign, Markup & Clientside Scripting geplaatst moeten worden.
Maak dan in het vervolg even een topic report aan. ;)

PRG>>WEB

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Ik maak de opties wel aan, maar zonder waarden. Dit gaat vrij snel (simpelweg de optie array de goede lengte geven). Het daadwerkelijk vullen van de opties is traag.

When life gives you lemons, start a battery factory


  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Zoals al eerder genoemd is een suggest-achtige oplossing wellicht mooier, maar misschien dat de gebruiker geen idee heeft van waar de optie mee begint, dus weet hij ook niks te typen.

Ik dat geval vind ik je oplossing best elegant. Wat je zou kunnen doen is kijken of het IE 6 betreft (conditional compilation lijkt me dan het mooist, zoiets als IE_version<7 ). Indien het IE 6 betreft kun je bij een onfocus op de select de options langzaam gaan vullen (per 30 bijv.) op intervallen met setTimeout() en bij een onblur clearTimeout() je hem weer. Wellicht vul je de select dan onnodig, maar ik denk dat de setTimeout() er wel voor zorgt dat de javascript thread de UI niet doet lijden terwijl het proces op de achtergrond toch door gaat.

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Interessante optie om de opties te vullen als achtergrondproces. Dat zou ik eens moeten uitproberen om te kijken of dit visueel de boel genoeg versnelt. Dan zal ik ook eens kijken hoe vervelend het is als je sneller scrollt dan de opties gevuld worden.

When life gives you lemons, start a battery factory

Pagina: 1