使用canvas实现一个电子签名功能
时间: 2023-12-22 20:02:57 浏览: 101
当然可以!以下是一个使用Canvas实现电子签名功能的示例代码。
HTML部分:
```html
< id="signature-canvas" width="400 height="200"></canvas>
<button onclick="clearCanvas()">清除</button>
<button onclick="saveSignature()">保存</button>
```
JavaScript部分:
```javascript
var canvas = document.getElementById('signature-canvas');
var ctx = canvas.getContext('2d');
var isDrawing = false;
var lastX = 0;
var lastY = 0;
canvas.addEventListener('mousedown', startDrawing);
canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDrawing);
canvas.addEventListener('mouseout', stopDrawing);
function startDrawing(e) {
isDrawing = true;
[lastX, lastY] = [e.offsetX, e.offsetY];
}
function draw(e) {
if (!isDrawing) return;
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(e.offsetX, e.offsetY);
ctx.stroke();
[lastX, lastY] = [e.offsetX, e.offsetY];
}
function stopDrawing() {
isDrawing = false;
}
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
function saveSignature() {
var dataURL = canvas.toDataURL();
console.log(dataURL); // 这里可以将dataURL发送到后端进行保存
}
```
这段代码创建了一个带有画布和两个按钮的HTML页面。当用户在画布上按下鼠标并移动时,会在画布上绘制路径。用户可以使用“清除”按钮来清除画布上的签名,使用“保存”按钮可以获取签名的base64编码数据URL,你可以将这个数据URL发送到后端进行保存。
希望这可以帮助到你!如有任何问题,请随时提问。
阅读全文
相关推荐














