| 145 | | var element = OpenLayers.Util.getElement(elementParam); |
|---|
| 146 | | if (element) { |
|---|
| 147 | | |
|---|
| 148 | | useCapture = useCapture || false; |
|---|
| 149 | | |
|---|
| 150 | | if (name == 'keypress') { |
|---|
| 151 | | if ( navigator.appVersion.match(/Konqueror|Safari|KHTML/) || |
|---|
| 152 | | element.detachEvent) { |
|---|
| 153 | | name = 'keydown'; |
|---|
| | 163 | var elementObservers = OpenLayers.Event.observers[elementId]; |
|---|
| | 164 | if (elementObservers) { |
|---|
| | 165 | |
|---|
| | 166 | // find the specific event type in the element's list |
|---|
| | 167 | var i=0; |
|---|
| | 168 | while(!foundEntry && i < elementObservers.length) { |
|---|
| | 169 | var cacheEntry = elementObservers[i]; |
|---|
| | 170 | |
|---|
| | 171 | if ((cacheEntry.name == name) && |
|---|
| | 172 | (cacheEntry.observer == observer) && |
|---|
| | 173 | (cacheEntry.useCapture == useCapture)) { |
|---|
| | 174 | |
|---|
| | 175 | elementObservers.splice(i, 1); |
|---|
| | 176 | if (elementObservers.length == 0) { |
|---|
| | 177 | delete OpenLayers.Event.observers[element.id]; |
|---|
| | 178 | } |
|---|
| | 179 | foundEntry = true; |
|---|
| | 180 | break; |
|---|
| 155 | | } |
|---|
| 156 | | |
|---|
| 157 | | // find element's entry in this.observers cache and remove it |
|---|
| 158 | | var elementObservers = OpenLayers.Event.observers[element.id]; |
|---|
| 159 | | if (elementObservers) { |
|---|
| 160 | | |
|---|
| 161 | | // find the specific event type in the element's list |
|---|
| 162 | | var i=0; |
|---|
| 163 | | while(!foundEntry && i < elementObservers.length) { |
|---|
| 164 | | var cacheEntry = elementObservers[i]; |
|---|
| 165 | | |
|---|
| 166 | | if ((cacheEntry.name == name) && |
|---|
| 167 | | (cacheEntry.observer == observer) && |
|---|
| 168 | | (cacheEntry.useCapture == useCapture)) { |
|---|
| 169 | | |
|---|
| 170 | | elementObservers.splice(i, 1); |
|---|
| 171 | | if (elementObservers.length == 0) { |
|---|
| 172 | | delete OpenLayers.Event.observers[element.id]; |
|---|
| 173 | | } |
|---|
| 174 | | foundEntry = true; |
|---|
| 175 | | break; |
|---|
| 176 | | } |
|---|
| 177 | | i++; |
|---|
| 178 | | } |
|---|
| 179 | | } |
|---|
| 180 | | |
|---|
| 181 | | //actually remove the event listener from browser |
|---|
| 182 | | if (element.removeEventListener) { |
|---|
| 183 | | element.removeEventListener(name, observer, useCapture); |
|---|
| 184 | | } else if (element && element.detachEvent) { |
|---|
| 185 | | element.detachEvent('on' + name, observer); |
|---|
| 186 | | } |
|---|
| | 182 | i++; |
|---|
| | 183 | } |
|---|
| | 184 | } |
|---|
| | 185 | |
|---|
| | 186 | //actually remove the event listener from browser |
|---|
| | 187 | if (element.removeEventListener) { |
|---|
| | 188 | element.removeEventListener(name, observer, useCapture); |
|---|
| | 189 | } else if (element && element.detachEvent) { |
|---|
| | 190 | element.detachEvent('on' + name, observer); |
|---|