OpenLayers OpenLayers

Ticket #798: iecrash.3.patch

File iecrash.3.patch, 1.6 kB (added by euzuro, 1 year ago)

at the risk of throwing another chef into the kitchen, this could be another version of the patch... maybe satisfying ?

  • lib/OpenLayers/Util.js

    old new  
    953953 * {Array} two item array, L value then T value. 
    954954 */ 
    955955OpenLayers.Util.pagePosition = function(forElement) { 
    956     var valueT = 0, valueL = 0; 
     956    var valueT = 0; 
     957    var valueL = 0; 
    957958 
    958959    var element = forElement; 
    959     do { 
    960       valueT += element.offsetTop  || 0; 
    961       valueL += element.offsetLeft || 0; 
     960    while(element) { 
     961         
     962        valueT += element.offsetTop  || 0; 
     963        valueL += element.offsetLeft || 0; 
    962964 
    963       // Safari fix 
    964       if (element.offsetParent==document.body) 
    965         if (OpenLayers.Element.getStyle(element,'position')=='absolute') break; 
     965        // Safari fix 
     966        if ((element.offsetParent == document.body) && 
     967            (OpenLayers.Element.getStyle(element,'position') == 'absolute')) { 
     968            break; 
     969        } 
    966970 
    967     } while (element = element.offsetParent); 
    968  
     971        try { 
     972            element = element.offsetParent; 
     973        } catch(e) { 
     974            OpenLayers.Console.error( 
     975                "OpenLayers.Util.pagePosition failed: element with id " + 
     976                element.id + " may be misplaced." 
     977            ); 
     978            break; 
     979        } 
     980    } 
     981         
    969982    element = forElement; 
    970     do
     983    while (element)
    971984      valueT -= element.scrollTop  || 0; 
    972985      valueL -= element.scrollLeft || 0; 
    973     } while (element = element.parentNode); 
     986     
     987      element = element.parentNode; 
     988    } 
    974989 
    975990    return [valueL, valueT]; 
    976991};