画布消失与软键盘上的android
Canvas disappear with soft keyboard on android
我做了一个小脚本,其中画布是根据用户输入动态绘制的(类型:数字),它需要工作,但问题是,在android设备上,当用户隐藏软键盘,画布被擦除。这是一种预防方法吗?谢谢你的帮助下面是代码
var form = document.querySelector("form"),
canvas = document.getElementById("canvas"),
positions = [];
if (!canvas) {
alert("Impossible de récupérer le canvas");
}
window.addEventListener("resize", function () {
if (window.innerWidth < 500) {
canvas.width = window.innerWidth * 0.8;
canvas.height = window.innerWidth * 0.8;
} else {
canvas.width = 600;
canvas.height = 600;
}
});
var context = canvas.getContext("2d");
if (!context) {
alert("Impossible de récupérer le contexte");
}
form.addEventListener("input", function () {
var table = form.table.value,
modulo = form.modulo.value,
centerX = canvas.width / 2,
centerY = canvas.height / 2,
rayon = (canvas.width - 5) / 2;
context.lineWidth = 2;
context.strokeStyle = "#21A8A3";
context.clearRect(0, 0, canvas.width, canvas.width);
for (var i = modulo; i >= 0; i -= 1) {
var angle = (2 * Math.PI / modulo) * i - (Math.PI / 2);
positions[i] = {
x: centerX + rayon * Math.cos(angle),
y: centerY + rayon * Math.sin(angle)
};
}
context.beginPath();
context.arc(centerX, centerY, rayon, 0, Math.PI * 2);
var j = positions.length - 1;
for (j; j >= 0; j -= 1) {
var next = j * table;
context.moveTo(positions[j].x, positions[j].y);
context.lineTo(positions[next % modulo].x, positions[next % modulo].y);
}
context.stroke();
});
和url:http://multiplier.hyperion-web.com/
我没有在Android设备上尝试过,但你的问题更可能是由于你的不良调整事件监听器。
这个处理程序确实在每个resize
事件调整你的画布大小,但它不会再次调用你的绘图函数,这会让你有一个空的画布,因为修改画布的width
和height
重置了它的上下文(它确实清除了它,但也重置了任何属性,如fillStyle
,变换矩阵,剪切区域等)。
调用和隐藏软键盘将触发一个resize
事件。
所以你的解决方案是修复你的事件处理程序,以便它在设置画布的新尺寸后重新绘制所有内容。
为此,你必须将绘图函数存储在一个单独的变量中,然后将其附加到输入事件中,并在resize事件侦听器中调用它。
Ps:即使将width
或height
属性设置为相同的值,也会重置整个上下文
相关文章:
- Android键盘不适用于包含Javascript的网页
- 键盘没有在Android和BlackBerry中显示元素焦点
- Chrome(Android)键盘将单词转移到js焦点更改的下一个输入
- 如何在Android网络视图中完全禁用所有输入的软键盘
- 关闭iOS / Android上的软键盘
- 如何从钛中的选项对话框单击事件中隐藏Android软键盘
- 键盘显示时离子含量不向下滚动(Android)
- 显示 HTML 字段的 Android 软键盘,即使连接了输入设备
- Phonegap Android 在输入焦点 Javascript 上显示键盘
- 使用 JavaScript 在 Android 中显示软键盘
- 如何处理iOS和Android键盘中的差异
- 当键盘出现时,如何在Android中处理网站
- Android键盘涵盖了web表单上的元素
- 如何在Mobile Hybrid应用程序中将Android键盘设置为大写字母
- iscroll4防止键盘在外部输入(android/ios)上聚焦显示
- 我希望Android软键盘有一个“;完成”;按钮
- Android中的键盘隐藏事件
- 对于html输入,Android键盘默认为大写优先
- 防止视窗调整网页大小时,android软键盘是活跃的
- Ionic Android -键盘不显示输入焦点