html
重新签名
确认签订
【前端知识|web页面-电子签名】angularjs 框架 - js
var lastX, lastY;
var canvasW = document.body.clientWidth - 70;
console.log(document.body.clientWidth)
var ctx = document.getElementById("canvas").getContext("2d");
var c = document.getElementById("canvas");
$scope.hasTips = true;
$scope.$on('$ionicView.afterEnter', function () {//进入页面执行
InitThis();
$scope.clearDrew();
drawTips(true);
}, false);
var barHeight = 44;
//biao
//显示or清空 '最佳书写区'
function drawTips(flag) {
if (flag) {
ctx.fillStyle = "#aaa";
ctx.font = "14px Arial";
ctx.fillText("最佳书写区", (canvasW - 70) / 2, 80);
ctx.stroke();
} else {
ctx.clearRect(0, 0, canvasW, 200);
}
} function InitThis() {
//触摸屏
c.addEventListener('touchstart', function (event) {
if ($scope.hasTips) {
drawTips(false)
}
if (event.targetTouches.length == 1) {
event.preventDefault();
// 阻止浏览器默认事件,重要
var touch = event.targetTouches[0];
mousePressed = true;
console.log(event)
Draw(touch.pageX - this.offsetLeft, touch.pageY - this.offsetTop - barHeight, false);
}}, false);
c.addEventListener('touchmove', function (event) {
if (event.targetTouches.length == 1) {
event.preventDefault();
// 阻止浏览器默认事件,重要
var touch = event.targetTouches[0];
if (mousePressed) {
Draw(touch.pageX - this.offsetLeft, touch.pageY - this.offsetTop - barHeight, true);
}
}
}, false);
c.addEventListener('touchend', function (event) {
if (event.targetTouches.length == 1) {
event.preventDefault();
// 阻止浏览器默认事件,防止手写的时候拖动屏幕,重要
//var touch = event.targetTouches[0];
mousePressed = false;
}
}, false);
//鼠标
c.onmousedown = function (event) {
mousePressed = true;
Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop - barHeight, false);
};
c.onmousemove = function (event) {
if (mousePressed) {
Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop - barHeight, true);
}
};
c.onmouseup = function (event) {
mousePressed = false;
};
}
function Draw(x, y, isDown) {
y = y * 0.8;
if (isDown) {
ctx.beginPath();
ctx.strokeStyle = '#333';
//颜色
ctx.lineWidth = 3;
//线宽
ctx.lineJoin = "round";
ctx.moveTo(lastX, lastY);
ctx.lineTo(x, y);
ctx.closePath();
ctx.stroke();
$scope.hasTips = false;
}
lastX = x;
lastY = y;
}
//清空内容
$scope.clearDrew = function () {
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
$scope.hasTips = true;
// drawTips(true);
}
//保存签名内容
$scope.saveDrew = function () {
if ($scope.hasTips) {
CommonService.alertPop("温馨提示", "请签名。");
return;
}
var a = document.createElement("canvas");
a.href = https://www.it610.com/article/canvas.toDataURL("image/png");
var base64 = a.href.substr(22);
if ($scope.Signatrue) {
$state.go("elecSealConfirm", {
base64: base64,
id: "1",
sealType: "own"
})
} else {
uploadFileCloud(base64)
}console.log(canvas.toDataURL());
}
推荐阅读
- Web基础|Vue高级实战
- js|数组(判断数据类型是否为数组)
- 前端|【毕业季】作为一名大二计科在校生,我有话想说
- javascript|JS数组at函数(获取最后一个元素的方法)介绍
- 学习笔记|ES学习笔记
- 前端js 面试
- Vue基础|Vue的模板语法及案例
- 如何在 JavaScript 中让代码更加精简
- JavaScript Promise 的理解和使用