<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi list,<o:p></o:p></p>
<p class="MsoNormal">I am using OpenLayers 2.13.1.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am experiencing a problem when zoom in/out while OpenLayers is in process of loading images from several WMS requests that resulted from a previous zoom operation.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Uncaught TypeError: Cannot read property '_eventCacheID' of null                         OpenLayers.debug.js:5178                                         
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Event.observe                                                                                                        OpenLayers.debug.js:5178                                         
<o:p></o:p></p>
<p class="MsoNormal">tile.onLoadEnd                                                                                                                                 OpenLayers.debug.js:31046                       
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Events.OpenLayers.Class.triggerEvent                                                                        OpenLayers.debug.js:5812                                         
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Tile.OpenLayers.Class.unload                                                                          OpenLayers.debug.js:29266                       
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Tile.Image.OpenLayers.Class.draw                                                                OpenLayers.debug.js:29584                       
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Layer.Grid.OpenLayers.Class.initGriddedTiles                                          OpenLayers.debug.js:30957                       
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Layer.Grid.OpenLayers.Class.moveTo                                                         OpenLayers.debug.js:30428                       
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Map.OpenLayers.Class.moveTo                                                                     OpenLayers.debug.js:9299                                         
<o:p></o:p></p>
<p class="MsoNormal">map.zoomTween.start.callbacks.done                                                                                  OpenLayers.debug.js:9682                                         
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Tween.OpenLayers.Class.stop                                                                        OpenLayers.debug.js:6697                                         
<o:p></o:p></p>
<p class="MsoNormal">OpenLayers.Tween.OpenLayers.Class.play                                                                         OpenLayers.debug.js:6730                                         
<o:p></o:p></p>
<p class="MsoNormal">(anonymous function)                                                                                                                  OpenLayers.debug.js:615                                           
<o:p></o:p></p>
<p class="MsoNormal">loops.(anonymous function)                                                                                                     OpenLayers.debug.js:6528<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am having an extremely difficult time trying to determine what my app is doing to make OpenLayers react this way.  The effect of the error is that zoom in/out capability breaks on the map until I reload the page.<o:p></o:p></p>
<p class="MsoNormal">Can someone enlighten me as to what may be going on here?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">More background on the problem:<o:p></o:p></p>
<p class="MsoNormal">============================<o:p></o:p></p>
<p class="MsoNormal">One way I have been able to avoid the problem, although it is not an acceptable solution, is to add the following code near the top of the “OpenLayers.Event.observe” method:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        if (element == null){<o:p></o:p></p>
<p class="MsoNormal">                //console.log("element: " + element + ", name: " + name + ", observer: " + observer + ", " + "useCapture: " + useCapture);<o:p></o:p></p>
<p class="MsoNormal">                return;<o:p></o:p></p>
<p class="MsoNormal">        }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Like this:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">   
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">/**</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">Method:</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">observe</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">Parameters:</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">elementParam</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F7F9F">-</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">{DOMElement</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">||</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">String}</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">name</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F7F9F">-</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">{String}</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">observer</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F7F9F">-</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">{function}</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">useCapture</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F7F9F">-</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">{Boolean}</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">     </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF">*/</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">    observe:
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">function</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">(elementParam, name, observer, useCapture) {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">var</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> element = OpenLayers.Util.getElement(elementParam);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">        useCapture = useCapture ||
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">false</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">       //Begin added lines<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in">        if (element == null){<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">                //console.log("element: " + element + ", name: " + name + ", observer: " + observer + ", " + "useCapture: " + useCapture);<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">                return;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">        }<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">       //End added lines<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> (name ==
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">'keypress'</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> &&</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">           (navigator.appVersion.match(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">/Konqueror|Safari|KHTML/</span><span style="font-size:10.0pt;font-family:Consolas;color:black">)</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">           || element.attachEvent)) {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">            name =
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">'keydown'</span><span style="font-size:10.0pt;font-family:Consolas;color:black">;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">        }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">//if observers cache has not yet been created, create it</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> (!</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">this</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">.observers)
 {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">           
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">this</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">.observers = {};</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">        }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">//if not already assigned, make a new unique cache ID</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> (!element._eventCacheID) {                        
</span><span style="font-size:10.0pt;font-family:Wingdings;color:black">ç</span><span style="font-size:10.0pt;font-family:Consolas;color:black">============= This is the line the error occurs because “element” is null</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">           
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">var</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> idPrefix =
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"eventCacheID_"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">           
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> (element.id) {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">                idPrefix = element.id +
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"_"</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> + idPrefix;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">            }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">            element._eventCacheID = OpenLayers.Util.createUniqueID(idPrefix);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:black">        }</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>