天天看點

原生js編寫移動端手寫簽名

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>簽名</title>
	<meta charset="utf-8">
    <style type="text/css">
		#myCanvas{
			border: 1px solid red;
		}
	</style>
</head>
<body>
	<canvas id= 'myCanvas' width="300" height="300">
		換浏覽器
	</canvas>
	<div id="image"></div>
	<button onclick="handleFinish()">完成</button>
    <button onclick="handleClear()">清除</button>
</body>
<script type="text/javascript">
	var canvas = document.getElementById('myCanvas');
    var context = canvas.getContext('2d');
    var myImg=document.querySelector('#image');
	var lastTime=0;
	canvas.ontouchstart = function(e){
		var ev = e||window.event;
		var x = e.changedTouches[0].clientX - canvas.offsetLeft;
        var y = e.changedTouches[0].clientY -canvas.offsetTop;
		context.beginPath();
		context.strokeStyle = 'red';
		context.lineWidth = 10;
		context.moveTo(x,y);
		canvas.ontouchmove = function(e){
			var ev = e||window.event;
			var x = e.changedTouches[0].clientX - canvas.offsetLeft;
			var y = e.changedTouches[0].clientY -canvas.offsetTop;
			context.lineTo(x,y);
			context.stroke();
		}
		canvas.ontouchend = function(){
			canvas.ontouchmove = '';
			lastTime=new Date().getTime();
		}
	}
	// 擦除文字
	function handleClear(){
		//第一種方法擦除(clearRect方法)
		// context.clearRect(0,0,canvas.width,canvas.height);
		//第二種方法擦除(重新設定高寬度)
		console.log(canvas);
		canvas.width='300';
        canvas.height='300';
        myImg.querySelector('img').remove();
	}
	// 完成
	function handleFinish(){
		convertCanvasToImage(canvas);
	}
	// canvas轉成圖檔
	function convertCanvasToImage(canvas) {
		var image = new Image();
		image.src = canvas.toDataURL("image/png");
        console.log(image.src);
        myImg.appendChild(image);
	} 
</script>
</html>