Merge pull request #612 from ahocevar/612

Touch events do not trigger the default action in attribution links. r=@marcjansen
This commit is contained in:
ahocevar
2012-08-01 04:16:38 -07:00
2 changed files with 55 additions and 0 deletions

View File

@@ -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;
}
}

View File

@@ -63,6 +63,40 @@
events.destroy();
}
function test_ignore(t) {
t.plan(5);
// set up
events = new OpenLayers.Events({}, element);
buttonClick = new OpenLayers.Events.buttonclick(events);
var link = document.createElement('a'),
span1 = document.createElement('span'),
span2 = document.createElement('span'),
span3 = document.createElement('span');
link.appendChild(span1);
span1.appendChild(span2);
span2.appendChild(span3);
t.eq(buttonClick.ignore(link), true,
'ignore returns true when element is a link');
t.eq(buttonClick.ignore(span1), true,
'ignore returns true when element is link descendant level 1');
t.eq(buttonClick.ignore(span2), true,
'ignore returns true when element is link descendant level 2');
t.eq(buttonClick.ignore(span3), false,
'ignore returns false when element is link descendant level 3');
t.eq(buttonClick.ignore(element), false,
'ignore returns false when element is not a link');
// tear down
buttonClick.destroy();
events.destroy();
}
function test_ButtonClick_buttonClick(t) {
t.plan(27);
events = new OpenLayers.Events({}, element);