Domanda

Sto lavorando su alcuni Javascript che sfruttano la capacità di Firefox 3.5 di eseguire XMLHttpRequests tra domini ... Ma mi piacerebbe fallire con grazia se non sono supportati.

Oltre a presentare una richiesta tra domini, esiste un modo per rilevare il supporto di un browser per loro?

È stato utile?

Soluzione

Per riferimento futuro, il rilevamento completo delle funzionalità CORS dovrebbe assomigliare a questo:

//Detect browser support for CORS
if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
    document.write("CORS supported (XHR)");
}
else if(typeof XDomainRequest !== "undefined"){
  //Use IE-specific "CORS" code with XDR
  document.write("CORS supported (XDR)");
}else{
  //Time to retreat with a fallback or polyfill
  document.write("No CORS Support!");
}

Puoi provare questo test dal vivo usando JSBin e vedere la risposta corretta in IE, Firefox, Chrome, Safari e Musica lirica.

Esistono alcuni casi limite in ambienti non browser che supportano XHR interdominio ma non XHR2 / CORS. Questo test non tiene conto di tali situazioni.

Altri suggerimenti

Secondo http://hacks.mozilla.org / 2009/07 / cross-site-xmlhttprequest-with-cors / dovresti essere in grado di usare:

if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
}

(Nota: c'è un commento su quella pagina che Chrome 2 non supera questo test [anche se supporta le richieste tra domini]. Ho testato Chrome 3 e il test ora sta superando.)

Tieni presente che solo perché il browser potrebbe supportare API tra domini non significa il server di destinazione consentirà il completamento della richiesta.

Potresti voler dare un'occhiata a EasyXDM , che avvolge le stranezze tra browser e fornisce un facile da usare API per la comunicazione nello script client tra domini diversi utilizzando il miglior meccanismo disponibile per quel browser (ad es. postMessage se disponibile, altri meccanismi in caso contrario).

Chiaramente quella libreria ha risolto il problema di rilevamento delle funzionalità del browser, in modo da poter beneficiare della loro esperienza. : -)

IE8 ha anche XDomainRequest che può essere utilizzato per recuperare RSS come testo che può essere successivamente analizzato in DOM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top