OpenLayers OpenLayers

Changeset 4061

Show
Ignore:
Timestamp:
08/27/07 14:33:43 (1 year ago)
Author:
tschaub
Message:

add try/catch hack for IE so that it doesn't choke on offsetParent check. (Closes 798.)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Util.js

    r4052 r4061  
    987987 
    988988    var element = forElement; 
    989     do { 
    990       valueT += element.offsetTop  || 0; 
    991       valueL += element.offsetLeft || 0; 
    992  
    993       // Safari fix 
    994       if (element.offsetParent==document.body) 
    995         if (OpenLayers.Element.getStyle(element,'position')=='absolute') break; 
    996  
    997     } while (element = element.offsetParent); 
     989    var child = forElement; 
     990    while(element) { 
     991 
     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; 
     1000 
     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};