Ik heb het volgende scriptje:
Functie: als iemand meer tekst invoert dan zichtbaar in de textarea, dan verwijder ik 1 voor 1 letters van de ingevoerde tekst, tot de tekst weer binnen de textarea valt. scrollTop() meet het aantal pixels dat is gescrolled. Door na het weghalen van iedere letter te meten of er nogsteeds gescrolled is, kunnen we zien of alle tekst alweer binnen het kader van de textarea valt.
Dit werkt goed in Firefox, Chrome, IE9, maar niet in IE8. Deze hangt zichzelf op tot je het script stopt. Bij een stop, is de textarea plotseling leeg.
Debug:
Als ik de waarde van $(this).scrollTop() check in IE8, zie ik dat die niet afneemt als er een regel tekst uit de textarea verdwijnt. Dus:
- ik copy paste een stuk tekst dat groter is dan de textarea in het veld.
- De while kicked in omdat $(this).scrollTop() groter is geworden dan 0, laten we zeggen 40.
- Het verwijderen van letters werkt vervolgens, maar $(this).scrollTop() blijft 40.
IE blijft dus oneindig pogingen doen om characters weghalen. Hence het bevriezen van IE, en het lege veld als het script is gestopt.
How come? Is hier een workaround voor?
Ik ben momenteel niet zo geinteresseerd in totaal andere oplossingen, maar vooral in het werkend maken van specifiek deze oplossing.
Trouwens diep triest, dat IE9 nogsteeds de hele browserinterface laat blokkeren bij een js alert() in een endless loop.
code:
1
2
3
4
5
6
| $('#messageboxtextarea').scroll(function () { while ($(this).scrollTop() > 0) { lines=$(this).val().slice(0, -1); $(this).val(lines); } }); |
Functie: als iemand meer tekst invoert dan zichtbaar in de textarea, dan verwijder ik 1 voor 1 letters van de ingevoerde tekst, tot de tekst weer binnen de textarea valt. scrollTop() meet het aantal pixels dat is gescrolled. Door na het weghalen van iedere letter te meten of er nogsteeds gescrolled is, kunnen we zien of alle tekst alweer binnen het kader van de textarea valt.
Dit werkt goed in Firefox, Chrome, IE9, maar niet in IE8. Deze hangt zichzelf op tot je het script stopt. Bij een stop, is de textarea plotseling leeg.
Debug:
Als ik de waarde van $(this).scrollTop() check in IE8, zie ik dat die niet afneemt als er een regel tekst uit de textarea verdwijnt. Dus:
- ik copy paste een stuk tekst dat groter is dan de textarea in het veld.
- De while kicked in omdat $(this).scrollTop() groter is geworden dan 0, laten we zeggen 40.
- Het verwijderen van letters werkt vervolgens, maar $(this).scrollTop() blijft 40.
IE blijft dus oneindig pogingen doen om characters weghalen. Hence het bevriezen van IE, en het lege veld als het script is gestopt.
How come? Is hier een workaround voor?
Ik ben momenteel niet zo geinteresseerd in totaal andere oplossingen, maar vooral in het werkend maken van specifiek deze oplossing.
Trouwens diep triest, dat IE9 nogsteeds de hele browserinterface laat blokkeren bij een js alert() in een endless loop.