|  | // browser shim for xmlhttprequest module | 
|  |  | 
|  | var hasCORS = require('has-cors'); | 
|  |  | 
|  | module.exports = function (opts) { | 
|  | var xdomain = opts.xdomain; | 
|  |  | 
|  | // scheme must be same when usign XDomainRequest | 
|  | // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx | 
|  | var xscheme = opts.xscheme; | 
|  |  | 
|  | // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default. | 
|  | // https://github.com/Automattic/engine.io-client/pull/217 | 
|  | var enablesXDR = opts.enablesXDR; | 
|  |  | 
|  | // XMLHttpRequest can be disabled on IE | 
|  | try { | 
|  | if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { | 
|  | return new XMLHttpRequest(); | 
|  | } | 
|  | } catch (e) { } | 
|  |  | 
|  | // Use XDomainRequest for IE8 if enablesXDR is true | 
|  | // because loading bar keeps flashing when using jsonp-polling | 
|  | // https://github.com/yujiosaka/socke.io-ie8-loading-example | 
|  | try { | 
|  | if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) { | 
|  | return new XDomainRequest(); | 
|  | } | 
|  | } catch (e) { } | 
|  |  | 
|  | if (!xdomain) { | 
|  | try { | 
|  | return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP'); | 
|  | } catch (e) { } | 
|  | } | 
|  | }; |