Ik heb een functie gemaakt om tekst dynamisch af te korten bij een bepaalde breedte in pixels:
Het werkt goed, maar de functie vaak moet worden uitgevoerd (zoals hier op Tweakers) merk je wel goed dat er echt een vertraging optreed van enkele seconden.
Dit wil ik niet. Hoe kan ik deze functie verbeteren?
Hoe gebeurt het hier op T.net? ?
JavaScript:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| function textwrap(text, maxWidth) { if(getWidth(text) < maxWidth) { return text; }else { newText = ''; stoppen = false; for(i=1; stoppen != true; i++) { newText = text.substring(0, i); if(getWidth(newText) > maxWidth || newText == text || getWidth(newText) > getWidth(text)) { stoppen = true; } } return newText+'...'; } } function getWidth(text) { var spanElement = document.createElement('span'); spanElement.style.whiteSpace = 'nowrap'; spanElement.innerHTML = text; document.body.appendChild(spanElement); var width = spanElement.offsetWidth; document.body.removeChild(spanElement); return width; } function getElementsByClassName(className, tag, elm){ var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)"); var tag = tag || "*"; var elm = elm || document; var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag); var returnElements = []; var current; var length = elements.length; for(var i=0; i<length; i++){ current = elements[i]; if(testClass.test(current.className)){ returnElements.push(current); } } return returnElements; } |
Het werkt goed, maar de functie vaak moet worden uitgevoerd (zoals hier op Tweakers) merk je wel goed dat er echt een vertraging optreed van enkele seconden.
Dit wil ik niet. Hoe kan ik deze functie verbeteren?
Hoe gebeurt het hier op T.net? ?
WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs