Hoi iedereen
.
Ik ben bezig om een soort van brainstorm applicatie te maken. Hier kun je zeg maar woordwebben mee creëren. Omdat ieder plaatje natuurlijk anders is veranderen ook de click areas van het plaatje. Nu heb ik een mooie AJAX tussenoplossing gebouwd dit dit naadloos verwerkt. Werkt allemaal prima onder Firefox, maar niet onder Internet Explorer.
Na wat onderzoek ligt het bij het dynamisch veranderen van de image maps. In IE genereert de 'applicatie' en harde crash die op iedere pc in de buurt te repeteren is.
Ik heb hier een voorbeeld online staan:
http://zeroxcool.net/got/iecrash.html
Zoals je ziet werkt dit onder FF prima, maar onder IE loopt hij vast nadat je dit 'clickpath' gevolgd hebt: 'forum' => 'forum'.
De code is ook op die pagina te vinden maar ik heb de belangrijkste stukken even hier neer gezet:
Kortweg: er wordt een nieuwe map aangemaakt (makeMap(1)). Deze map krijgt als members in eerste instantie drie areas (deze gegevens komen uit een vooraf vastgezette array (zie de URL)). Die areas worden aan de map toegevoegd mbv. de appendChild functie. De vorige map is daarvoor al leeg gemaakt.
Wie zou mij kunnen vertellen wat er mis gaat in IE?
Ik ben bezig om een soort van brainstorm applicatie te maken. Hier kun je zeg maar woordwebben mee creëren. Omdat ieder plaatje natuurlijk anders is veranderen ook de click areas van het plaatje. Nu heb ik een mooie AJAX tussenoplossing gebouwd dit dit naadloos verwerkt. Werkt allemaal prima onder Firefox, maar niet onder Internet Explorer.
Na wat onderzoek ligt het bij het dynamisch veranderen van de image maps. In IE genereert de 'applicatie' en harde crash die op iedere pc in de buurt te repeteren is.
Ik heb hier een voorbeeld online staan:
http://zeroxcool.net/got/iecrash.html
Zoals je ziet werkt dit onder FF prima, maar onder IE loopt hij vast nadat je dit 'clickpath' gevolgd hebt: 'forum' => 'forum'.
De code is ook op die pagina te vinden maar ik heb de belangrijkste stukken even hier neer gezet:
Java:
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
90
91
92
93
| <html> <head> <script type="text/javascript"> var map = null; var items = new Array(); /* forum - GoT - tweakers.net */ items[1] = new Array(); items[1][0] = new Array(); items[1][0]["x1"] = 419; items[1][0]["y1"] = 283; items[1][0]["x2"] = 481; items[1][0]["y2"] = 316; items[1][0]["alt"] = "forum"; items[1][0]["url"] = 2; items[1][1] = new Array(); items[1][1]["x1"] = 93; items[1][1]["y1"] = 284; items[1][1]["x2"] = 207; items[1][1]["y2"] = 316; items[1][1]["alt"] = "tweakers.net"; items[1][1]["url"] = 3; items[1][2] = new Array(); items[1][2]["x1"] = 267; items[1][2]["y1"] = 280; items[1][2]["x2"] = 333; items[1][2]["y2"] = 320; items[1][2]["alt"] = "GoT"; items[1][2]["url"] = 1; function clearMap() { for (var i = map.areas.length - 1; i >= 0; i--) { map.removeChild(map.areas[i]); } document.getElementById('mapcontainer').removeChild(map); } function makeMap(index) { if (!items[index]) return; if (map != null) clearMap(); map = document.createElement("map"); map.id = "map"+index; map.name = "map"+index; document.getElementById('mapcontainer').appendChild(map); for (var i = 0; i < items[index].length; i++) { addArea(map, i, items[index][i]); } document.getElementById('mapimg').useMap = "#map"+index; document.getElementById('mapimg').src = 'item'+index+'.png'; } function addArea(map, index, node) { var a, x1, x2, y1, y2, url, alt; a = document.createElement("area"); x1 = node["x1"]; y1 = node["y1"]; x2 = node["x2"]; y2 = node["y2"]; url = node["url"]; alt = node["alt"]; a.shape = "rectangle"; a.coords = x1+","+y1+","+x2+","+y2; a.alt = "Bekijk alles onder '"+alt+"' een niveau dieper"; a.title = a.alt; if (url == null) { a.href = "javascript:makeMap("+previous+")"; } else { a.href = "javascript:makeMap("+url+")"; } map.appendChild(a); } </script> </head> <body> <div id="mapcontainer"></div> [img]"item1.png"[/img] <script type="text/javascript"> makeMap(1); </script> </body> </html> |
Kortweg: er wordt een nieuwe map aangemaakt (makeMap(1)). Deze map krijgt als members in eerste instantie drie areas (deze gegevens komen uit een vooraf vastgezette array (zie de URL)). Die areas worden aan de map toegevoegd mbv. de appendChild functie. De vorige map is daarvoor al leeg gemaakt.
Wie zou mij kunnen vertellen wat er mis gaat in IE?
[ Voor 28% gewijzigd door zeroxcool op 21-03-2006 14:52 . Reden: highlighting ]