0

我已经在网站上实施了数字签名。在浏览器中,一切正常。切换到移动视图时会出现问题。在模拟器 Chrome 和移动设备中测试。由于某种原因,这条线被绘制在离光标一定距离的地方。这会导致在画布外部绘制线条,并且 signaturePad.isEmpty() 返回 false。结果是一个空签名。有人能遇到类似的吗?

4

2 回答 2

0

我必须在使用 window.setTimeout 执行的方法中执行调整画布大小的逻辑。我只延迟了 50 毫秒,但到那时缩放总是正确的。

于 2020-02-24T21:37:42.530 回答
0

https://github.com/szimek/signature_pad#handling-high-dpi-screens

遵循此文档适用于我的应用程序。

function resizeCanvas() {
  var ratio =  Math.max(window.devicePixelRatio || 1, 1);
  canvas.width = canvas.offsetWidth * ratio;
  canvas.height = canvas.offsetHeight * ratio;
  canvas.getContext("2d").scale(ratio, ratio);
  signaturePad.clear(); // otherwise isEmpty() might return incorrect value
}

window.addEventListener("resize", resizeCanvas);
resizeCanvas();
于 2018-08-07T20:00:41.400 回答