Ik heb een scriptje gemaakt, wat het volgende doet: alle gewone tekst uit een stuk html (dwz alles behalve de tekst tussen < en >) worden door een replace/modify functie gegooid. Met dat scriptje kun je dus bijv alle o's in een pagina vervangen door
, alle letters omdraaien of andere leuke geintjes, zonder de html codes te verkloten. Ja leuk he! 
Dit werkt goed met kleine pagina's maar bij grotere pagina's krijg ik een stack overflow...
Het is een recursieve functie maar ergens zit er wellicht toch iets verkeerd of misschien kan JS het gewoon niet meer aan, te weinig geheugen? Of een brakke garbage collection? Iemand tips hoe ik dit kan oplossen? Ik werk met IE5.5 btw.
Dit is de code:
(om uit te testen dit scriptje in de header van een willekeurige pagina plakken en dan een body onLoad="modifyPage()")
Dit werkt goed met kleine pagina's maar bij grotere pagina's krijg ik een stack overflow...
Dit is de code:
(om uit te testen dit scriptje in de header van een willekeurige pagina plakken en dan een body onLoad="modifyPage()")
code:
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
48
49
50
51
52
53
54
55
56
| <SCRIPT LANGUAGE="Javascript">
function modify(s, modification)
{
var modText = "";
var Text = "";
var res = "";
if (s.indexOf("<") > -1)
Text = s.substring(0, s.indexOf("<"));
else
Text = s;
modText = modifyText(Text, modification);
if (s.indexOf("<") > -1)
{
html = s.substring(s.indexOf("<"), s.indexOf(">") + 1);
rest = s.substring(s.indexOf(">") + 1);
if (rest.length < 1)
modText += html;
else
modText += html + modify(rest, modification);
}
return modText;
}
function modifyText(s, modification)
{
var res = "";
if (modification == "smiley")
{
url = "http://forum.fok.nl/i/s/yawnee.gif";
res = s.replace(/o/g, "[img]'"+url+"'[/img]");
}
else if (modification == "iets anders")
{
[doe iets anders met var s]
....
....
}
return res;
}
function modifyPage()
{
html = document.body.innerHTML
document.body.innerHTML = modify(html, "smiley");
}
</SCRIPT> |