Ik heb een javascript die mijn DOM-tree manipuleert. Dit script creeert namelijk enkele basic elementen: DIV en TABLE en kent er enkele attributen aan toe.
Het probleem is dat in Firefox dit script correct wordt uitgevoerd en dat de output ook goed is, maar IE7 gaat hier de mist in. ( in IE8 werkt ook alles naar behoren ).
Wanneer ik de DOM-tree bekijk, zie ik dat alle elementen wel aanwezig zijn, maar toch niet getoond worden. Is dit een gekende bug in IE7 ?
Ter informatie: ik gebruik prototype om mijn DOM-tree te manipuleren.
Hieronder wat code + info:
Het javascript zal recursief een "knockout-table" genereren mbv DIV en het float-attribuut. Hierboven wordt een fragment uit dit script getoond.
De generate functie wordt in mijn HTML file geinvoked.
Initieel is de parentContainer is gewoon een DIV element dat reeds in mijn HTML pagina's zit. Verder in de recursie zal de parentContainer steeds een gecreeerde DIV-element (left / right) worden.
Het vreemde hierbij is ook dat IE7 wel de elementen die in de generateTableHeaders functie worden gecreeerd wel weergeeft, maar niet de elementen in de generateTable functie. Deze functie maakt de headers: "finale" / "1/2 finale" / ...
De output in FF & IE8 is:

De output in IE7 is:

De DOM-tree is wel degelijk correct in IE:
Het probleem is dat in Firefox dit script correct wordt uitgevoerd en dat de output ook goed is, maar IE7 gaat hier de mist in. ( in IE8 werkt ook alles naar behoren ).
Wanneer ik de DOM-tree bekijk, zie ik dat alle elementen wel aanwezig zijn, maar toch niet getoond worden. Is dit een gekende bug in IE7 ?
Ter informatie: ik gebruik prototype om mijn DOM-tree te manipuleren.
Hieronder wat code + info:
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
48
49
50
51
52
53
54
55
56
57
| function generate(height, position, data, parentContainer) { var nodeWidth = ... var restWidth = ... ... generateTableHeaders(height, parentContainer, nodeWidth); generateTable(0, height, position, normalizedData, parentContainer, nodeWidth, restWidth); } function generateTableHeaders(height, parentContainer, nodeWidth) { for (var i=0; i<=height; i++) { var DIV_header = new Element("div", {"id":"header_" + i}); var H3 = new Element("h3"); DIV_header.addClassName("knockoutTableHeader"); DIV_header.setStyle({"float":"right", "width":nodeWidth + "px"}); H3.insert((i==0) ? "finale" : "1/" + Math.pow(2, i) + " finale"); DIV_header.insert(H3); parentContainer.insert(DIV_header); } var DIV_cleaner = new Element("div"); DIV_cleaner.addClassName("cleaner"); parentContainer.insert(DIV_cleaner); } function generateTable(level, height, position, data, parentContainer, nodeWidth, restWidth) { if (level == height) { // at bottom of the tree generateNode(position, data, parentContainer, nodeWidth + restWidth); } else { generateLeft(level+1, height, position + '0', data, parentContainer, nodeWidth, restWidth); generateNode(position, data, parentContainer, nodeWidth); generateRight(level+1, height, position + '1', data, parentContainer, nodeWidth, restWidth); } } function generateRight(level, height, position, data, parentContainer, nodeWidth, restWidth) { // container for right-tree var DIV_right = new Element("div", {"id":"right_" + level}); DIV_right.addClassName("right"); DIV_right.setStyle({"float":"left", "width":restWidth + "px"}); //create right-table into this new container generateTable(level, height, position, data, DIV_right, nodeWidth, restWidth - nodeWidth); // place the container in its parent-container parentContainer.insert(DIV_right); } |
Het javascript zal recursief een "knockout-table" genereren mbv DIV en het float-attribuut. Hierboven wordt een fragment uit dit script getoond.
De generate functie wordt in mijn HTML file geinvoked.
Initieel is de parentContainer is gewoon een DIV element dat reeds in mijn HTML pagina's zit. Verder in de recursie zal de parentContainer steeds een gecreeerde DIV-element (left / right) worden.
Het vreemde hierbij is ook dat IE7 wel de elementen die in de generateTableHeaders functie worden gecreeerd wel weergeeft, maar niet de elementen in de generateTable functie. Deze functie maakt de headers: "finale" / "1/2 finale" / ...
De output in FF & IE8 is:

De output in IE7 is:

De DOM-tree is wel degelijk correct in IE:

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.