Това се отнася за събития, когато достъпността е включена.
Кодът е такъв; когато достъпността е включена и събитието за докосване се регистрира, събитията не се задействат. Ако не регистрирам събития с докосване, тогава всичко работи добре.
Пропускам ли нещо?
Този код работи с iOS 7 и по-нови, но проблемът е само с iOS 8 и по-нови (до последната версия).
<html >
<head>
<meta name=viewport content="width=device-width, initial-scale=1">
<title></title>
<style>
.displayTable{
display:table;
table-layout:fixed;
border-collapse:collapse;
}
.displayRow{
display:table-row;
}
.displayCell{
display:table-cell;
white-space:nowrap;
}
</style>
</head>
<body>
<div id="outparent">
</div>
<script>
var p1 = document.getElementById('outparent');
function enableTouchEvents() {
p1.addEventListener('touchstart', onTouch);
p1.addEventListener('touchmove', onTouch);
p1.addEventListener('touchend', onTouch);
}
function removeTouchEvents() {
p1.removeEventListener('touchstart', onTouch);
p1.removeEventListener('touchmove', onTouch);
p1.removeEventListener('touchend', onTouch);
}
function render() {
var str = '<form id="form"> \
<div id="inparent"> \
<div style="table-layout:fixed;display:table" > \
<div style="display:table-row" >\
<div style="display:table-cell"> \
<input id="b2" value="submit me!" type="submit" /> \
</div></div> \
<div style="display:table-row">\
<div style="display:table-cell"> \
<input id="b1" value="click me!" type="button" /> \
</div></div> \
</div> \
</div> \
</form>';
p1.innerHTML = str;
}
p1.addEventListener('click', function (e) {
//console.log('out clicked ' + e.target.id);
alert('you clicked on ' + e.target.id);
e.preventDefault();
});
function onTouch(e) {
console.log('event type ' + e.type + ' ' + e.timeStamp);
}
render();
// comment this everything works fine.
enableTouchEvents();
</script>
</body>
</html>