OpenLayers OpenLayers

Ticket #798: iecrash.4.patch

File iecrash.4.patch, 1.6 kB (added by tschaub, 1 year ago)

if you don't like for loops

  • lib/OpenLayers/Util.js

    old new  
    986986    var valueT = 0, valueL = 0; 
    987987 
    988988    var element = forElement; 
    989     do { 
    990       valueT += element.offsetTop  || 0; 
    991       valueL += element.offsetLeft || 0; 
     989    var child = forElement; 
     990    while(element) { 
    992991 
    993       // Safari fix 
    994       if (element.offsetParent==document.body) 
    995         if (OpenLayers.Element.getStyle(element,'position')=='absolute') break; 
     992        if(element == document.body) { 
     993            if(OpenLayers.Element.getStyle(child, 'position') == 'absolute') { 
     994                break; 
     995            } 
     996        } 
     997         
     998        valueT += element.offsetTop  || 0; 
     999        valueL += element.offsetLeft || 0; 
    9961000 
    997     } while (element = element.offsetParent); 
     1001        child = element; 
     1002        try { 
     1003            // wrapping this in a try/catch because IE chokes on the offsetParent 
     1004            element = element.offsetParent; 
     1005        } catch(e) { 
     1006            OpenLayers.Console.error( 
     1007                "OpenLayers.Util.pagePosition failed: element with id " + 
     1008                element.id + " may be misplaced." 
     1009            ); 
     1010            break; 
     1011        } 
     1012    } 
    9981013 
    9991014    element = forElement; 
    1000     do { 
    1001       valueT -= element.scrollTop  || 0; 
    1002       valueL -= element.scrollLeft || 0; 
    1003     } while (element = element.parentNode); 
    1004  
     1015    while(element) { 
     1016        valueT -= element.scrollTop  || 0; 
     1017        valueL -= element.scrollLeft || 0; 
     1018        element = element.parentNode; 
     1019    } 
     1020     
    10051021    return [valueL, valueT]; 
    10061022}; 
    10071023