make stopObserving/stopObservingElement more resilient: can accept either

elements or ids. Closes #603 (and makes #604 work).


git-svn-id: http://svn.openlayers.org/trunk/openlayers@2946 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-03-31 19:46:04 +00:00
parent 1dea6430cd
commit 53b23bdf37
+12 -8
View File
@@ -88,9 +88,13 @@ OpenLayers.Event = {
* element's cached observers, calling stopObserving on each one, * element's cached observers, calling stopObserving on each one,
* skipping those entries which can no longer be removed. * skipping those entries which can no longer be removed.
* *
* @param {String} elementId * @param {DOMElement || String} elementParam
*/ */
stopObservingElement: function(elementId) { stopObservingElement: function(elementParam) {
var elementId = (typeof elementParam == "string") ? elementParam
: OpenLayers.Util.getElement(elementParam).id;
var elementObservers = OpenLayers.Event.observers[elementId]; var elementObservers = OpenLayers.Event.observers[elementId];
if (elementObservers) { if (elementObservers) {
var i=0; var i=0;
@@ -141,12 +145,12 @@ OpenLayers.Event = {
* @type Boolean * @type Boolean
*/ */
stopObserving: function(elementParam, name, observer, useCapture) { stopObserving: function(elementParam, name, observer, useCapture) {
var foundEntry = false;
var element = OpenLayers.Util.getElement(elementParam);
if (element) {
useCapture = useCapture || false; useCapture = useCapture || false;
var element = OpenLayers.Util.getElement(elementParam);
var elementId = (typeof elementParam == "string") ? elementParam
: element.id;
if (name == 'keypress') { if (name == 'keypress') {
if ( navigator.appVersion.match(/Konqueror|Safari|KHTML/) || if ( navigator.appVersion.match(/Konqueror|Safari|KHTML/) ||
element.detachEvent) { element.detachEvent) {
@@ -155,7 +159,8 @@ OpenLayers.Event = {
} }
// find element's entry in this.observers cache and remove it // find element's entry in this.observers cache and remove it
var elementObservers = OpenLayers.Event.observers[element.id]; var foundEntry = false;
var elementObservers = OpenLayers.Event.observers[elementId];
if (elementObservers) { if (elementObservers) {
// find the specific event type in the element's list // find the specific event type in the element's list
@@ -184,7 +189,6 @@ OpenLayers.Event = {
} else if (element && element.detachEvent) { } else if (element && element.detachEvent) {
element.detachEvent('on' + name, observer); element.detachEvent('on' + name, observer);
} }
}
return foundEntry; return foundEntry;
}, },