[XML/AJAX] XMLHttpRequest: MSIE vs FireFox

Pagina: 1
Acties:
  • 353 views sinds 30-01-2008
  • Reageer

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
En wederom een post over AJAX, omdat de resultaten van de search niet voldoen.

Ik heb een onder Mozilla Firefox werkende applicatie met een AJAX implementatie. Maar onder Internet Explorer krijg ik het niet aan de praat. Het gaat om het aanmaken van het XMLHTTP object, wat in Firefox en Safari native is en waarvoor je in MSIE een ActiveX object aan moet roepen. Dit laatste gaat fout, zelfs bij het gebruik van het voorbeeld van w3schools. De code die ik gebruik is de volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
function loadXMLDoc(url, callback) 
{
   if (window.XMLHttpRequest) {
      req = new XMLHttpRequest();
   } else  {
      req = ActiveXObject("Microsoft.XMLHTTP");
   }
   req.onreadystatechange = callback;
   req.open("GET", url, true);
   req.send(null);
}


Er zijn op Internet veel varianten van de string "Microsoft.XMLHTTP" te vinden, maar geen van allen werken (op meerdere versies van IE en verschillende PC's). Ben ik nou gek of doe ik een glitch in the matrix over het hoorfd?

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Ik denk dat men je hiermee beter kan helpen in Webdesign & Graphics. :)

PW>>WG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • -Odysseus-
  • Registratie: Oktober 2002
  • Laatst online: 21-01-2009
Ik heb deze code gebruikt om een XMLHttpRequest aan te maken

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
function getHTTPObject() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (E) {
                xmlhttp = false;
            }
        }
    @else
    xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
            xmlhttp.overrideMimeType("text/xml"); 
        }
        catch (e) {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}
var http = getHTTPObject(); // Create the HTTP Object

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

instantieren doe je doorgaans mbv het 'new' keyword ;)

Maar dit vind ik veel hipper eigenlijk:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (!window.XMLHttpRequest)
{
    window.XMLHttpRequest = function()
    {
        var types = [   'Microsoft.XMLHTTP',
                'MSXML2.XMLHTTP.5.0',
                'MSXML2.XMLHTTP.4.0',
                'MSXML2.XMLHTTP.3.0',
                'MSXML2.XMLHTTP'    ];

        for (var i = 0; i < types.length; i++)
        {
            try
            {
                return new ActiveXObject(types[i]);
            }
            catch(e) {}
        }

        return undefined;
    }
} 

Intentionally left blank


  • Peter
  • Registratie: Januari 2005
  • Laatst online: 12-04 23:19
Waarom, wat is er speciaal aan die code op de versie nummers na?

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
Behoorlijk SUF dat ik die 'new' vergeten ben zeg... |:( |:( |:(

die versienummers doen t em juist... daarnaast is t een leuk grapje om door alle versies te itereren tot succes.

Ik ga deze brokken code eens proberen, thanx...

PS: Ik weet niet of MSIE 7 ook een native XMLHTTP object gaat ondersteunen, zo niet, is het misschien handig om in je lijstje ook al een paar future versies te zetten?

[ Voor 10% gewijzigd door Jurgle op 11-12-2005 00:39 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 11:12
crisp schreef op zaterdag 10 december 2005 @ 22:37:
instantieren doe je doorgaans mbv het 'new' keyword ;)

Maar dit vind ik veel hipper eigenlijk:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (!window.XMLHttpRequest)
{
    window.XMLHttpRequest = function()
    {
        var types = [   'Microsoft.XMLHTTP',
                'MSXML2.XMLHTTP.5.0',
                'MSXML2.XMLHTTP.4.0',
                'MSXML2.XMLHTTP.3.0',
                'MSXML2.XMLHTTP'    ];

        for (var i = 0; i < types.length; i++)
        {
            try
            {
                return new ActiveXObject(types[i]);
            }
            catch(e) {}
        }

        return undefined;
    }
} 
Als ik het goed begrijp probeer je ze een voor een tot er een werkt? (of niks werkt natuurlijk)

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

En hoe doe je Firefox dan?
Zelf doe ik altijd dit:
JavaScript:
1
2
3
4
function IXH(){
    var x=(window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest());
    return x;
}

[ Voor 79% gewijzigd door MTWZZ op 11-12-2005 10:44 ]

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Ik neem aan dat Firefox al een window.xmlHttpRequest heeft (zie buitenste if).

Verwijderd

Ik heb ook ooit eens een dergelijk probleem gehad, maar dan andersom.
Het werkte wel in IE maar niet in Firefox, na veel gepruts ben ik erachter gekomen dat de doctype het probleem veroorzaakte:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Hiermee werkte het in beide, maar werkte een ander deel van mijn code niet, dus heb ik dit eruit gehaald en toen werkte het wel in IE maar niet in Firefox. Ik heb het nu opgelost door de doctype van html 4.0 erin te zetten als ik me niet vergis.

Ik realiseer me dat ik je geen concrete oplossingen bied, maar ik hoop dat je er wat aan hebt.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
@gerben1986: Mag ik vragen wat er niet werkte toen je die XHTML 1.0 doctype er in zette?

Noushka's Magnificent Dream | Unity


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

idd, doctype zou niet uit mogen maken; zolang je als text/html stuurt wordt het toch als HTML behandelt - een doctype verandert daar niets aan...

Intentionally left blank


  • Dutchmega
  • Registratie: September 2001
  • Niet online
http://www.g2gshare.net/c...a/media/xmlhttprequest.js

XMLHTTPRequest voor IE, Opera en FireFox :)

Verwijderd

Michali schreef op zondag 11 december 2005 @ 13:48:
@gerben1986: Mag ik vragen wat er niet werkte toen je die XHTML 1.0 doctype er in zette?
Dat was een stukje code om het menu mee te laten verplaatsen wanneer ik scrollde.
Even kijken of ik het orginele voorbeeld nog ergens kan vinden:
Dit floating menu
Ik heb het aangepast zodat hij ook horizontaal kan scrollen.
Dit is het stukje code wat niet werkte:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
window.stayTopLeft=function()
    {
        if (verticalpos=="fromtop"){
        var pY = ns ? pageYOffset : document.body.scrollTop;
        ftlObj.y += (pY + startY - ftlObj.y)/8;
        }
        else{
        var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
        ftlObj.y += (pY - startY - ftlObj.y)/8;
        }
        ftlObj.sP(ftlObj.x, ftlObj.y);
        setTimeout("stayTopLeft()", 10);
    }

Het vreemde was dat de functie wel altijd om de 10 ms werd aangeroepen (getest d.m.v. alerts), maar het menu niet werd verplaatst.
Na veel geklooi heb ik de doctype weggehaald en toen deed hij het wel, maar het Ajax gedeelte deed het toen niet meer, wel in IE en Opera, maar niet in Mozilla Firefox.

Op dit moment heb ik er geen doctype meer in te staan en werkt alles naar behoren.
Want bij de html 4.0 doctype werkte het floating menu wel, maar het ajax-gebeuren weer niet.
Dus al iemand weet welke doctype ik zou kunnen gebruiken, hoor ik dat graag.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

Opera workaround is alleen van belang voor versies < 7, en wie gebruikt dat nog? ;)

Voor de rest is enkel het snippet wat ik hierboven postte genoeg (zit ook in jouw versie zie ik), dan kan je gewoon new XMLHttpRequest(); doen en kijken of je een object terugkrijgt; zo niet dan pech :P
Verwijderd schreef op zondag 11 december 2005 @ 14:00:
[...]
Op dit moment heb ik er geen doctype meer in te staan en werkt alles naar behoren.
Want bij de html 4.0 doctype werkte het floating menu wel, maar het ajax-gebeuren weer niet.
Dus al iemand weet welke doctype ik zou kunnen gebruiken, hoor ik dat graag.
Ik denk dat jij niet zozeer tegen HTML/XHTML problemen aanloopt, maar leunt op quirksmode 'functionaliteit' - hetgeen altijd wel goed op te lossen is (denk aan dingen als altijd een eenheid opgeven voor style-properties, niet direct document.body aanspreken maar document.documentElement etcetera).

[ Voor 105% gewijzigd door crisp op 11-12-2005 14:07 ]

Intentionally left blank


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
@crisp:

In hoe verre is het eigenlijk nodig (en zinvol) om al die XMLHttpRequest versies mee te nemen?

[ Voor 8% gewijzigd door SuperRembo op 11-12-2005 14:07 ]

| Toen / Nu


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

SuperRembo schreef op zondag 11 december 2005 @ 14:06:
@crisp:

In hoe verre is het eigenlijk nodig (en zinvol) om al die versies mee te nemen?
Dat is van belang voor oudere versies IE en eventueel oudere versies windows; welke weet ik niet precies though...

Intentionally left blank


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op zondag 11 december 2005 @ 14:00:
[...]

Dat was een stukje code om het menu mee te laten verplaatsen wanneer ik scrollde.
Even kijken of ik het orginele voorbeeld nog ergens kan vinden:
Dit floating menu
Ik heb het aangepast zodat hij ook horizontaal kan scrollen.
Dit is het stukje code wat niet werkte:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
window.stayTopLeft=function()
    {
        if (verticalpos=="fromtop"){
        var pY = ns ? pageYOffset : document.body.scrollTop;
        ftlObj.y += (pY + startY - ftlObj.y)/8;
        }
        else{
        var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
        ftlObj.y += (pY - startY - ftlObj.y)/8;
        }
        ftlObj.sP(ftlObj.x, ftlObj.y);
        setTimeout("stayTopLeft()", 10);
    }

Het vreemde was dat de functie wel altijd om de 10 ms werd aangeroepen (getest d.m.v. alerts), maar het menu niet werd verplaatst.
Na veel geklooi heb ik de doctype weggehaald en toen deed hij het wel, maar het Ajax gedeelte deed het toen niet meer, wel in IE en Opera, maar niet in Mozilla Firefox.

Op dit moment heb ik er geen doctype meer in te staan en werkt alles naar behoren.
Want bij de html 4.0 doctype werkte het floating menu wel, maar het ajax-gebeuren weer niet.
Dus al iemand weet welke doctype ik zou kunnen gebruiken, hoor ik dat graag.
Waar ik zo even op kom als na even kijken is dat document.body.scrollTop altijd de waarde 0 heeft. Verder geef je het menu een top en left waarde zonder er 'px' achter te zetten. Dat geeft errors in Firefox. En van innerHeight kan ik geen waarde opvragen? Die lijkt niet te bestaan.

Noushka's Magnificent Dream | Unity


Verwijderd

Michali schreef op zondag 11 december 2005 @ 14:21:
[...]

Waar ik zo even op kom als na even kijken is dat document.body.scrollTop altijd de waarde 0 heeft. Verder geef je het menu een top en left waarde zonder er 'px' achter te zetten. Dat geeft errors in Firefox. En van innerHeight kan ik geen waarde opvragen? Die lijkt niet te bestaan.
Bedankt dat je even mee wilt kijken.
In mijn versie gebruik ik de innerHeight niet, want ik heb de var verticalpos eruit gehaald.
Met het plaatsen van px erachter heb je wel gelijk denk ik. Daar zal ik binnenkort even naar kijken.
Dan zal ik het hele script even controleren, maar op het moment zelf was ik al blij dat ik iets werkends had.

Het is natuurlijk wel zo netjes om een doctype te gebruiken, dan weet je ook zeker dat een browser het niet verkeerd intepreteerd. Het vreemde was dat ik zowel in FF als in IE geen foutmelding kreeg bij het runnen van dit script.

En op W3schools staat dit over de scrollTop:
Sets or returns the distance between the top edge of the body and the topmost portion of the content visible in the window
Oftewel, zodra de pagina is gescrolled wordt er een waarde gegeven.

Maar heel stiekem heb ik het gevoel dat ik het topic van Jurgle aan het kapen ben.

Modbreak:En wellicht handig om dat dan ook niet te doen ;)

[ Voor 3% gewijzigd door BtM909 op 12-12-2005 12:17 ]


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
En om weer even terug on-topic te komen, zelfs bij de code van crisp blijft mijn XMLHTTP object in MSIE leeg :?

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Verwijderd

Staat ActiveX wel aan?

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
Ja natuurlijk, is gras groen?

De stekker van mn pc zit overigens ook in het stopcontact, en mn pc staat aan :p

Is er niet een debug app voor javascript van MSIE? Zoals die in FF standaard zit...

edit:
Dat kan dus hier: http://www.microsoft.com/...fdf19ccd99&displaylang=en

edit:edit: Wat dus geen JS debugger is:S

[ Voor 131% gewijzigd door Jurgle op 11-12-2005 16:15 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Jurgle schreef op zondag 11 december 2005 @ 15:05:
En om weer even terug on-topic te komen, zelfs bij de code van crisp blijft mijn XMLHTTP object in MSIE leeg :?
Heb je dat dingetje van mij geprobeerd?
Zie anders ook hier
Werkt in FF 1.0.7, IE 6.0.2900 en Opera 8.5

[ Voor 7% gewijzigd door MTWZZ op 12-12-2005 12:03 . Reden: extra info ]

Nu met Land Rover Series 3 en Defender 90


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Jurgle schreef op zondag 11 december 2005 @ 15:25:
Ja natuurlijk, is gras groen?

[/edit]
Weet je het zeker, voordat je een wijs antwoord teruggeeft ;), want als ik ActiveX uitzet, dan werkt het niet meer bij mij. Welke versie van IE gebruik je om te testen.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
Nou nou... hij doet t, na een rewrite en ik heb nog steeds geen idee waar t aan ligt.

@MTWZZ: Je dingetje heeft zeker geholpen

@BtM909: Natuurlijk weet ik het zeker. Ik test (window.ActiveXObject) zoals MTWZZ omschrijft. Ik snap dat ik een scherpe opmerking plaats, maar verwacht ook dat jij snapt dat als er oplossingen zoals hierboven worden gegeven (waaronder een test op windows.ActiveXObject) en er komt een dergelijke noob reply, ik lichtelijk geirriteerd raak. No offence btw...

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • Juup
  • Registratie: Februari 2000
  • Niet online
Jurgle schreef op maandag 12 december 2005 @ 19:22:
@BtM909: Natuurlijk weet ik het zeker. Ik test (window.ActiveXObject) zoals MTWZZ omschrijft. Ik snap dat ik een scherpe opmerking plaats, maar verwacht ook dat jij snapt dat als er oplossingen zoals hierboven worden gegeven (waaronder een test op windows.ActiveXObject) en er komt een dergelijke noob reply, ik lichtelijk geirriteerd raak. No offence btw...
Jij bent toch diezelfde Jurgle die ergens "new" vergeten was, of niet? Niet zo bijdehand dan a.u.b. Het was zeer wel mogelijk dat ActiveX uitstond bij je en het was een zeer goede vraag van Blues.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
@Jurgle, je probleem is dermate vreemd dat zoiets best gevraagd mag worden. Wie weet zet je wel ergens zelf een waarde voor window.ActiveXObject, dan heb je niets meer aan die check. (geen idee of het wel mag overigens, maar je weet nooit.) Het is dan ook absoluut geen noob reply zoals je zegt, gewoon een normale vraag om bepaalde zaken weg te filteren en het probleem te isoleren. Als je daar zo op reageert, dan hoef je imo ook geen topic te openen. Hij probeert je gewoon te helpen, dus je mag daar wel een beetje normaal op reageren dan.

Noushka's Magnificent Dream | Unity


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

@jurgle:

Gebruik je Norton als virusscanner? Of bijv. SurfRight (van hitmanpro)?

als je norton gebruikt: -> uitschakelen
als je surfright gebruikt: probeer die eens uit te schakelen bij IE via extra ->invoegtoepassingen beheren

Stop uploading passwords to Github!


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

@Schizoducky
Da's leuk die dingen uitzetten maar dan ga je voorbij aan het feit waar je die dingen voor geinstalleerd hebt.
Het is dan beter om daar een workaround voor te bouwen. Ik neem aan (gezien jouw reply) dat er meer mensen last hebben van dit probleem.

@Jurgle
Je gaf aan dat het opeens wel werkte, heb je enig idee wat je gewijzigd had waardoor het plotseling werkt?

Nu met Land Rover Series 3 en Defender 90


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

MTWZZ schreef op dinsdag 13 december 2005 @ 14:24:
@Schizoducky
Da's leuk die dingen uitzetten maar dan ga je voorbij aan het feit waar je die dingen voor geinstalleerd hebt.
Het is dan beter om daar een workaround voor te bouwen. Ik neem aan (gezien jouw reply) dat er meer mensen last hebben van dit probleem.
Als die dingen geinstalleerd zijn en ze zijn té strict (wat nogal eens gebeurt met norton, ik ken bijvoorbeeld een of ander geintje met 'lange' html paginas van > 32 kb) dan gaat dat apparaat zelf aan zn doel voorbij. en zonder dat soort dingen uit te schakelen kom je toch überhaupt niet bij de beste oplossing, aangezien dit soort grappenmakers je HTML aanpassen, en jij dus niet meer ervanuituit kan gaan dat de browser de code gevoerd krijgt die jij hem voorschrijft...

Stop uploading passwords to Github!


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
@MTWZZ: Nee geen id wat ik fout deed...

@JAAAP: Ik was het woordje 'new' in mijn post vergeten ja, niet in mijn code.

@Iedereen die mij aanviel op mijn taalgebruik: Hallo, ik geef hem ook weer geen trap onder zn kont. Ik snap dondersgoed dat iedereen die hier een reply post mij probeert te helpen. Maar ik had een dergelijke fout al lang uitgesloten (was op te maken uit mijn voorgaande posts)

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Ik gebruik zelf deze code:
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
function createXMLHttpRequest()
{
    // Create and initialise the temporary variable
    var http_request = null;
   
    // This check is for Mozilla, Safari, Opera,...
    if (window.XMLHttpRequest)
    {
        try
        {
            http_request = new XMLHttpRequest();
           
            if (http_request.overrideMimeType)
            {
                http_request.overrideMimeType('text/xml');
            }
        
        return http_request;
        }
        catch (e)
        {
            return null;
        }
    }
    // For Internet Explorer
    else
    {
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        
        return http_request;
        }
        catch (e)
        {
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
        
        return http_request;
            }
            catch (e)
            {
                return null;
            }
        }
    }
}

Maarjah, uiteindelijk komt het allemaal op hetzelfde neer. Dus denk ook niet dat deze veel gaat helpen.

Maar ik moet zeggen dat ik die van crisp toch wel een hele mooie vind.

[ Voor 12% gewijzigd door eghie op 13-12-2005 18:39 ]


  • LvdO
  • Registratie: Augustus 2005
  • Laatst online: 20-05-2024
crisp schreef op zondag 11 december 2005 @ 14:07:
Dat is van belang voor oudere versies IE en eventueel oudere versies windows; welke weet ik niet precies though...
Volgens mij zit het zo:

IE 5.0 en 5.5 komen met MSXML 2.6 (MSXML2.XMLHTTP.2.6).
IE 6.0 heeft MSXML 3.0.
MSXML 4.0 wordt met sommige applicaties geleverd.
Office 2003 installeert MSXML 5.0.
Windows Vista, Office 12, SQL Server 2005 en Visual Studio 2005 installeren allemaal MSXML 6.0, dus die kan ook in je lijstje.

MSXML > 3.0 wordt side-by-side geinstalleerd naast een eventuele bestaande versie. De progids zonder versie nummer (MSXML2.XMLHTTP) zullen steeds de oudste versie van het object met gevraagde interface geven. Nu is de interface hetzelfde, maar als je bv XSL wil gebruiken, moet je je wel realiseren dat MSXML < 4.0 alleen Working Draft XSL ondersteunt. Daarnaast is de performance in de loop der jaren verbeterd.

Dan nog een laatste opmerking. 'undefined' is niet gedefinieerd in Javascript en zal dus idd een 'undefined' melding geven. Tot iemand globaal undefined op true zet... Ik zou dus in dat geval null terug geven:

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
if (!window.XMLHttpRequest)
{
    window.XMLHttpRequest = function()
    {
        var types = [    
                'MSXML2.XMLHTTP.6.0',
                'MSXML2.XMLHTTP.5.0',
                'MSXML2.XMLHTTP.4.0',
                'MSXML2.XMLHTTP.3.0',
                'MSXML2.XMLHTTP',
                'Microsoft.XMLHTTP'    ];

        for (var i = 0; i < types.length; i++)
        {
            try
            {
                return new ActiveXObject(types[i]);
            }
            catch(e) {}
        }

        return null;
    }
}

Xopus


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

LvdO schreef op woensdag 14 december 2005 @ 14:28:
[...]
Dan nog een laatste opmerking. 'undefined' is niet gedefinieerd in Javascript en zal dus idd een 'undefined' melding geven. Tot iemand globaal undefined op true zet... Ik zou dus in dat geval null terug geven:
Nope, undefined is een top-level property - alleen wil IE daar nog wel eens anders over denken (hoewel IE6 het meen ik wel goed geimplementeerd heeft). null teruggeven is echter inderdaad ook wat ik meestal doe.

Intentionally left blank


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Is het misschien netter om te onthouden welk type object je uiteindelijk succesvol hebt gemaakt? Dan hoeft niet elke keer die loop met try/catch doorlopen te worden.

| Toen / Nu


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Die kan je toch opslaan als je deze functie eenmalig aanroept :? ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Jurgle schreef op dinsdag 13 december 2005 @ 18:08:
@Iedereen die mij aanviel op mijn taalgebruik: Hallo, ik geef hem ook weer geen trap onder zn kont. Ik snap dondersgoed dat iedereen die hier een reply post mij probeert te helpen. Maar ik had een dergelijke fout al lang uitgesloten (was op te maken uit mijn voorgaande posts)
Waar dan? :)

Het is natuurlijk wel de bedoeling dat je aangeeft wat je hebt geprobeerd. Als het er niet expliciet bijstaat, dan mag ik (of iedere andere user) absoluut niet aannemen dat je het wel gechecked. Tuurlijk zitten we op Tweakers.net en verwachten we een bepaald niveau van gebruikers, maar assumption was toch the mother of all..... ? ;)

Waarom mijn post: je opmerkingen komen een beetje betweterig over, terwijl je in de positie bent van hulpzoekende. Mede-users zijn niet verplicht om je te helpen hoor en we hadden je ook niet gestraft als het per ongeluk wel uit stond.

Ik kan me alleen niet voorstellen dat de code van crisp eerst niet werkte en nu ineens wel zonder iets aan je systeem te wijzigen :)

[ Voor 4% gewijzigd door BtM909 op 14-12-2005 17:09 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • LvdO
  • Registratie: Augustus 2005
  • Laatst online: 20-05-2024
crisp schreef op woensdag 14 december 2005 @ 16:47:
Nope, undefined is een top-level property - alleen wil IE daar nog wel eens anders over denken (hoewel IE6 het meen ik wel goed geimplementeerd heeft). null teruggeven is echter inderdaad ook wat ik meestal doe.
Je hebt gelijk. undefined is idd een global property maar er is geen undefined literal zoals er wel een null literal is. Je kan trouwens ook return; gebruiken of return helemaal weghalen. In alle gevallen is het resultaat undefined.

Xopus


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:28

crisp

Devver

Pixelated

LvdO schreef op woensdag 14 december 2005 @ 17:53:
[...]


Je hebt gelijk. undefined is idd een global property maar er is geen undefined literal zoals er wel een null literal is. Je kan trouwens ook return; gebruiken of return helemaal weghalen. In alle gevallen is het resultaat undefined.
Return weglaten vind ik niet netjes; een functie waarvan je verwacht dat 'ie iets returned zou in alle gevallen ook daadwerkelijk iets moeten returnen - al is het null

Intentionally left blank

Pagina: 1