Ik ben bezig met een Autofill script dat OOP werkt en in FF werkt alles precies zo als ik wil. Ik heb een input veld en daar hang ik een onkeyup eventhandler aan met als attributen een xmlfile, css stijl en wat kleine dingen die het tot een werkend geheel maken. Snel in te bouwen dus.
Echter in IE wil er iets niet lukken en ik zit er nu al een tijdje op stuk maar wil het (natuurlijk) graag werkend hebben in beide browsers. Ik zal even de relevante code plaatsen, let op dat dit het meeste mist maar dat is voor dit topic niet erg.
Hoe kan ik dit oplossen zonder de parseResult functie te wijzigen, die werkt in FF namelijk gewoon zoals het moet. Ik zie het echt niet. Mn huisgenoot en wat collega's hebben er ook naar gekeken maar die zagen het ook niet terwijl t vast erg simpel is. Jullie een idee?
Echter in IE wil er iets niet lukken en ik zit er nu al een tijdje op stuk maar wil het (natuurlijk) graag werkend hebben in beide browsers. Ik zal even de relevante code plaatsen, let op dat dit het meeste mist maar dat is voor dit topic niet erg.
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
| // Autofill een input element function Autofill(strId, strXmlFile, strEvent, strBox, strStyle) { // kopieer settings in het object this.strId = strId; // etc // vraag het element op this.objElement = document.getElementById(this.strId); // kopper de event handler eraan this.objElement.prnt = this; this.objElement.onkeyup = function(){ this.prnt.importXML(); } } // Laad de XML file Autofill.prototype.importXML = function() { // FF of IE ? if (document.implementation && document.implementation.createDocument) { // FF, werkt goed xmlDoc = document.implementation.createDocument("", "", null); xmlDoc.prnt = this; xmlDoc.onload = function(){ this.prnt.parseResult(); } } else if (window.ActiveXObject) { // IE, werkt niet xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.prnt = this; // deze regel gaat verkeerd, verder komt het script niet meer xmlDoc.onreadystatechange = function () { if (xmlDoc.readyState == 4) this.prnt.parseResult(); }; } else { alert('Your browser can\'t handle this script'); return; } xmlDoc.load(this.strXmlFile); } // Parse de XML File Autofill.prototype.parseResult = function() { // afhandeling van de ingeladen xml file } |
Hoe kan ik dit oplossen zonder de parseResult functie te wijzigen, die werkt in FF namelijk gewoon zoals het moet. Ik zie het echt niet. Mn huisgenoot en wat collega's hebben er ook naar gekeken maar die zagen het ook niet terwijl t vast erg simpel is. Jullie een idee?