【发布时间】:2019-11-14 13:28:23
【问题描述】:
这是关于开启辅助功能时的事件。
代码是这样的;当可访问性打开并且触摸事件获取注册事件未触发时。如果我不注册触摸事件,那么一切正常。
我错过了什么吗?
此代码适用于 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>
【问题讨论】:
-
你能描述一下应该发生什么以及有什么区别吗?
-
嗨,当我通过“enableTouchEvents()”注册触摸事件时,我没有收到按钮点击事件。如果我没有注册触摸事件,那么按钮点击事件就会触发。仅当打开可访问性时才会发生这种情况。
-
您确定没有在任何触摸事件处理程序中调用 e.preventDefault() 或 e.stopPropagation() 吗?这将阻止点击触发。
-
另外,您可能应该在 addEventListener 和 removeEventListener 调用中添加“false”作为第三个参数。
-
嗨,这是设备上运行的唯一代码。没有 preventDefault 或 stopPropagation。可能你可以试试。我尝试在调试器中通过“monitorEvents()”来监控事件,但它只显示“touchstart”和“touchend”事件而不是点击事件
标签: ios safari touch accessibility dom-events