Ik heb de code aardig uit kunnen dunnen. Met de invoering van de global om de geschreven string in vast te houden is eigenlijk ook de noodzaak om de innerHTML van de layer uit te lezen komen te vervallen.
Dit is de code die ik ervan gebakken heb (pas op: lay-out vern**kend

):
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
| <script language="JavaScript">
// browser detect
var dom = (document.getElementById)? true:false;
var ie4 = (document.all && !dom)? true:false;
var ns = (document.layers)? true:false;
// the arrays
var shot = new Array();
shot[0] = "scooterz.jpg";
shot[1] = "ppc.jpg";
shot[2] = "shiatsu.jpg";
shot[3] = "astrid.jpg";
var link = new Array();
link[0] = "<a href='http://tcw2.ppsw.rug.nl/~mjvdveen/scooterzdummy/' target='_blank'>";
link[1] = "<a href='#'>";
link[2] = "<a href='http://shiatsupraktijk.cjb.net/' target='_blank'>";
link[3] = "<a href='http://tcw2.ppsw.rug.nl/~mjvdveen/astrid/' target='_blank'>";
var titel = new Array();
titel[0] = "scooterz.nl";
titel[1] = "Pedagogische Praktijk Campstede";
titel[2] = "Shiatsu-praktijk";
titel[3] = "Astrid van der Veen";
titel[10] = "Maak uw keuze";
var text = new Array();
text[0] = "Scooterz.nl behoorde 2 jaar lang tot één van de grotere scootersites van Nederland. Met een layout die door de bezoekers als 'zeer goed' werd bestempeld en een goede interactie tussen gebruikers en beheerders was Scooterz.nl een succesvolle site voor jonge scooterliefhebbers.";
text[1] = "Dit wordt de website van Pedagogische Praktijk Campstede. Aan deze website wordt momenteel gewerkt";
text[2] = "Op deze website van Shiatsu-praktijk Hengelo is gekozen voor een rustgevende uitstraling. De standaard scrollbalk, die op deze website zou 'vloeken' met het ontwerp, is vervangen door twee subtiele pijltjes rechtsonderin.";
text[3] = "De website van het zangtalent Astrid is uitgevoerd in duistere kleuren die goed passen bij de stijl van de muziek. Een forum én een gastenboek zijn speciaal voor deze website ontwikkeld en zorgen voor optimale interactie tussen bezoekers en artiest.";
text[10] = "In het menu aan de rechterkant kunt u een keuze maken uit ons portfolio."
// some globals
var i;
var j;
var string;
function schrijflayer(id, text) {
if (ns) {
document.layers('Layer1').document.layers(id).document.open();
document.layers('Layer1').document.layers(id).document.writeln(text);
document.layers('Layer1').document.layers(id).document.close();
} else if (ie4){
document.all[id].style.innerHTML = text;
} else if (dom) {
document.getElementById(id).innerHTML = text;
}
}
function changeShot(index) {
schrijflayer('screenshot', link[index] + "[img]'"[/img]</a><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'><br><center>Klik op de screenshot om de site te bezoeken</font></center>") ;
}
function start_up(idx) {
i = 0;
j = 0;
word = text[idx].split(' ');
string = word[0];
schrijflayer('titel', titel[idx]);
spellit();
}
function spellit() {
if (i++ < string.length) {
schrijflayer('anima', string.substring(0,i));
setTimeout('spellit()', 50);
} else if (j++ < word.length-1) {
string += ' ' + word[j];
setTimeout('spellit()', 50);
}
}
</script> |
De code is dusdanig sneller dat de timeout naar 50ms kon.
Wat heb ik veranderd?
Ten eerste het browser detect script behoorlijk vereenvoudigd en global gemaakt
Alle instellings variabelen ook global gemaakt (komt vaak goed van pas later).
de array title hernoemd naar titel (voor Mozilla blijkt title als global reserved te zijn)
Alle functies die maar 1 regel code hadden verwijderd - 1 regel code vind ik niet voldoende om er een functie van te maken.
Nog 1 dingetje: binnen event-handlers hoef je geen javascript: voor de functie te zetten. Dit:
is dus voldoende.
Ik heb dit getest met IE5.5 IE6, Mozilla 0.9.8, Netscape 6.1 en Netscape 4.78. Mij bevindingen:
IE - geen probleem
Mozilla 0.9.8 - alleen de titel wordt niet bold (probleempje misschien in de CSS?)
NS6.1: het vlak voor de titel en tekst wordt te klein weergegeven. De letters daarentegen te groot. Is denk ik met een uitbreiding van de CSS wel op te lossen.
NS4.78: zelfde als bij NS6.1, alleen schrijft het JS niks weg. Waarschijnlijk door de combinatie van geneste layers, en layers in een tabel. Daar houd NS4 niet zo van. Ik heb een poging gedaan het op te lossen, maar is tot nog toe niet gelukt...
Hopelijk kom je hiermee weer wat verder..