1) ์บ๋ฒ์ค์ ๊ทธ๋ฆฌ๊ธฐ
2) ํฌ๊ธฐ ์กฐ์ -> ์บ๋ฒ์ค๊ฐ ์ง์์ง
3) isEmpty ()๋ false๋ฅผ ๋ฐํํ๊ณ ๋น ์บ๋ฒ์ค๋ฅผ ์ ์ถํ ์ ์์ต๋๋ค.
http://szimek.github.io/signature_pad/ ์์ ์ฌํ ๊ฐ๋ฅ
SignaturePad๊ฐ ์บ๋ฒ์ค์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ง์ผ๋ด์ผํ ๊น์? ์ด๋ ๊ฒํ๋ฉด ์ฌ์ฉ์๋ ๋น ์๋ช ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
์บ๋ฒ์ค์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ์๋ง๋ MutationObserver๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์์ง๋ง IE10 ๋ฐ ์ด์ ๋ฒ์ ์์๋ ์๋ํ์ง ์์ต๋๋ค. ์บ๋ฒ์ค ์์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ ํธ์ถ ํ ์์๋ ํจ์๋ฅผ ๋ ธ์ถํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์์ ์๋ฆด ์ ์์ต๋๊น? ๋๋ ๋ ๋ค-ํจ์๋ฅผ ๋ ธ์ถํ๊ณ MutationObserver๋ฅผ ์ฌ์ฉํ์ฌ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ์์ ์๋์ผ๋ก ํธ์ถํฉ๋๋ค.
ํ์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ต๋๋ค. ํฌ๊ธฐ ์กฐ์ ๋ฃจํด์ด ๋๋ ๋ SignaturePad.clear () ํธ์ถ์ ์ถ๊ฐํ์ผ๋ฉฐ ์ด๋ก ์ธํด ๋ฌธ์ ๊ฐ ๊ฑฐ์ ํด๊ฒฐ๋ฉ๋๋ค.
๋๋ ์์๋ค #clear
์ด๋ฏธ ์ค์ isEmpty
true๋ก :) ์ด์จ๋ , ์ ํ๋ฅผ ์๋ง ์ข์ ์์ด๋์ด์ด๋ค #clear
๊ทธ๋์ ๊ฑฐ๊ธฐ๋ฅผ ์ ์ฝ๋ฉํธ์ ํจ๊ป๋ฟ๋ง ์๋๋ผ ๋ฐ๋ชจ ํ์ด์ง์ ์๊ฐ์ด ์๊ธธ ๋๊น์ง ์ด์ด ๋๊ฒ ์ต๋๋ค.
๋์ฒด๋ก์ด ๋ฌธ์ ์ hasSignature
๋์์ต๋๋ค.
signaturePad = new SignaturePad(canvas, {
onEnd: function() {
hasSignature = true;
}
});
๊ณผ
clearButtonAction = function () {
hasSignature = false;
signaturePad.clear();
}
๊ทธ๋ฐ ๋ค์ ์บ๋ฒ์ค๋ฅผ ๋ช ํํ๊ฒ ํ์ํ๊ฑฐ๋ ์๋ช ์ด์๋ ๊ฒฝ์ฐ ์๋ช ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ ์ ์์ต๋๋ค.
var resizeCanvas = function () {
if (hasSignature) {
signatureCopy = signaturePad.toDataURL();
}
var ratio = window.devicePixelRatio || 2;
// Note fixed width:height ratio. No need for dynamic height.
canvas.width = canvas.offsetWidth * ratio;
canvas.height = Math.floor(canvas.offsetWidth/3) * ratio;
canvas.getContext("2d").scale(ratio, ratio);
// Line width is relative to canvas size to prevent different
// width after orientation changes.
signaturePad.minWidth = canvas.offsetWidth / 1000;
signaturePad.maxWidth = signaturePad.minWidth * 5;
if (hasSignature) {
signaturePad.fromDataURL(signatureCopy);
} else {
// signaturePad doesn't watch canvas and needs to be told it's clear now
signaturePad.clear();
}
}
# 32์์ ์ธ๊ธํ๋ฏ์ด ์นดํผ๋ ์ฝ๊ฐ ํ๋ ค ์ง์ง๋ง ์๋ช ์ ๋ชจ๋ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค.
์ด์จ๋ ํ๋ฅญํ ์ํํธ์จ์ด Szymon์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ด ๊ด์ ์์์ด ํฌ๊ธฐ ์กฐ์ ์ ์ด๋ป๊ฒ ๋ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด์ผํฉ๋๋ค. ์ฆ, ํ์ด์ง ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ฉด ์บ๋ฒ์ค๊ฐ ์๋์ผ๋ก ๊ทธ๋ ค ์ ธ์ผํฉ๋๋ค.
onEnd
์ฝ๋ฐฑ์ signatureCopy
์ ์ ์ฅํ๋ฉด ํจ์ฌ ๋ ์ ์๋ํฉ๋๋ค (hasSignature์ ํจ๊ป ๋๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ clear ๋ฉ์๋์์ null์ ์ง์ ํ์ฌ ํ๋๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด signatureCopy๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค). ). ํฌ๊ธฐ ์กฐ์ ์ ๋ง์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ๋ฌ ๋ฒ ์คํ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋งค์ฐ ๋ฎ์ ํ์ง์ ์๋ช
์ผ๋ก ๋๋์ง ์์ต๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ช ํฌ๊ธฐ ์กฐ์ ์ด ์์ค๋๋ฉด http://szimek.github.io/signature_pad/ ์์ ์ฌํ ํ ์ ์์ต๋๋ค
๋๋ ์๋์ ๊ฐ์ด resizecanvas ()์ ๋ ์ค์ ์ถ๊ฐํ๊ณ ์ง๊ธ๊น์ง IE / FF / Chrome์์ ์ํํ๊ฒ ์๋ํ์ต๋๋ค.
function resizeCanvas() {
// When zoomed out to less than 100%, for some very strange reason,
// some browsers report devicePixelRatio as less than 1
// and only part of the canvas is cleared then.
var data = signaturePad.toDataURL(); //Added
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.fromDataURL(data); //Added
}
@iamjoyce ์๋, ์ ์ฒด ์บ๋ฒ์ค๊ฐ ์ง์์ง๋ ๋ค๋ฅธ ๋ฌธ์ ์์ต๋๋ค. ํ๋ฆฟํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค. :)
์๋ง๋ ์ด๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค : https://github.com/szimek/signature_pad/issues/33#issuecomment -298242020
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์๋์ ๊ฐ์ด resizecanvas ()์ ๋ ์ค์ ์ถ๊ฐํ๊ณ ์ง๊ธ๊น์ง IE / FF / Chrome์์ ์ํํ๊ฒ ์๋ํ์ต๋๋ค.