console
const canvas = document.getElementById('signatureCanvas');
const ctx = canvas.getContext('2d');
const mobileStatus = (/Mobile|Android|iPhone/i.test(navigator.userAgent))
let isDrawing = false;
let lastX, lastY;
function handleMouseDown(e) {
isDrawing = true;
let event2 = mobileStatus ? e.changedTouches[0] : e;
[lastX, lastY] = [event2.clientX - canvas.offsetLeft, event2.clientY - canvas.offsetTop];
}
function handleMouseMove(e) {
if (!isDrawing) return;
let event2 = mobileStatus ? e.changedTouches[0] : e;
const x = event2.clientX - canvas.offsetLeft;
const y = event2.clientY - canvas.offsetTop;
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(x, y);
ctx.stroke();
[lastX, lastY] = [x, y];
}
function handleMouseUp() {
isDrawing = false;
}
function clearSignature() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
function saveSignature() {
const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const base64ImageData = canvas.toDataURL();
console.log(base64ImageData);
}
console.log(mobileStatus)
canvas.addEventListener(mobileStatus ? "touchstart" : 'mousedown', handleMouseDown);
canvas.addEventListener(mobileStatus ? "touchmove" : 'mousemove', handleMouseMove);
canvas.addEventListener(mobileStatus ? "touchend" : 'mouseup', handleMouseUp);
<div>
<canvas id="signatureCanvas" width="300" height="200"></canvas>
<button onclick="clearSignature()">清除</button>
<button onclick="saveSignature()">保存</button>
</div>