Changeset 521

Show
Ignore:
Timestamp:
08/16/08 08:30:32 (5 months ago)
Author:
rgl
Message:

Bugfix: we are resuing the same XHR instance; for this to work in IE we must set the onreadystatechange handler after we call open.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/daemon/orbited/static/Orbited.js

    r519 r521  
    637637        var numSent = sendQueue.length 
    638638        sessionUrl.setQsParameter('ack', lastPacketId) 
    639 //        xhr = createXHR(); 
     639        var tdata = encodePackets(sendQueue) 
     640;;;     self.logger.debug('post', retries, tdata); 
     641        if (Orbited.settings.enableFFPrivleges) { 
     642            try {  
     643                netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');  
     644            } catch (ex) { }  
     645        }         
     646        xhr.open('POST', sessionUrl.render(), true) 
     647        // NB: its awkard, but for reusing the XHR object in IE (7 at least), 
     648        //     we can only reset the onreadystatechange *after* we call open; 
     649        //     if we don't do this, the XHR will stop sending data. 
     650        // See "Reusing XMLHttpRequest Object in IE" 
     651        //     at http://keelypavan.blogspot.com/2006/03/reusing-xmlhttprequest-object-in-ie.html 
    640652        xhr.onreadystatechange = function() { 
    641653            switch(xhr.readyState) { 
    642                  
    643654                case 4: 
    644655                    if (xhr.status == 200) { 
     
    658669            } 
    659670        } 
    660         var tdata = encodePackets(sendQueue) 
    661 ;;;     self.logger.debug('post', retries, tdata); 
    662         if (Orbited.settings.enableFFPrivleges) { 
    663             try {  
    664                 netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');  
    665             } catch (ex) { }  
    666         }         
    667         xhr.open('POST', sessionUrl.render(), true) 
    668671        xhr.send(tdata) 
    669  
    670672    } 
    671673