【发布时间】:2016-11-17 08:09:56
【问题描述】:
我有a webpage using WebGL on a fullscreen canvas。
我有这个 css 来停止选择
*, *:before, *:after {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
我有这段代码来停止上下文菜单
gl.canvas.addEventListener('contextmenu', function(e) {
e.preventDefault();
return false;
});
但是当我在 chrome iOS 中触摸屏幕时,它会变暗。这是问题的 gif,首先显示 chrome iOS,然后显示 safari iOS。
或者这里是 youtube 版本
注意:忽略图形卡顿。我的屏幕截图导出由于某种原因搞砸了
请注意,在 chrome 中,背景有时会闪烁灰色。在 Safari 中,它始终是白色的。这是我试图阻止的 chrome 中的灰色。
这真的很烦人,因为只是点击屏幕最终会有效地闪烁屏幕并且真的很分散注意力。
更新
所以我开始尝试从头开始并添加部分。看起来它与画布无关,它与 click 事件的列表有关。
如果我有
gl.canvas.addEventListener('click', function() {});
我得到了调光。如果我删除它,我不会。 touchstart 事件列表不会导致变暗
更新 2
所以它肯定不是与画布无关。如果我删除画布并只使用 div 但我正在检查 click 我会变暗
这些 CSS 设置没有帮助
* {
-webkit-tap-highlight-color: rgba(0,0,0,0);
pointer-events: none;
}
成功了
elem.addEventListener('touchstart', function(e) {
e.preventDefault();
});
我不确定preventDefault 对touchstart 是否有任何其他影响
【问题讨论】:
标签: javascript ios css google-chrome html5-canvas