diff --git a/lib/OpenLayers/Events/buttonclick.js b/lib/OpenLayers/Events/buttonclick.js index e2a3edad62..e0b2a87514 100644 --- a/lib/OpenLayers/Events/buttonclick.js +++ b/lib/OpenLayers/Events/buttonclick.js @@ -121,6 +121,26 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({ } while(--depth > 0 && element); return button; }, + + /** + * Method: ignore + * Check for event target elements that should be ignored by OpenLayers. + * + * Parameters: + * element - {DOMElement} The event target. + */ + ignore: function(element) { + var depth = 3, + ignore = false; + do { + if (element.nodeName.toLowerCase() === 'a') { + ignore = true; + break; + } + element = element.parentNode; + } while (--depth > 0 && element); + return ignore; + }, /** * Method: buttonClick @@ -170,6 +190,7 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({ propagate = false; } } else { + propagate = !this.ignore(OpenLayers.Event.element(evt)); delete this.startEvt; } }