1) рдХреИрдирд╡рд╛рд╕ рдкрд░ рдбреНрд░рд╛
2) рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ -> рдХреИрдирд╡рд╛рд╕ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ
3) рдЦрд╛рд▓реА () рдЧрд▓рдд рд╣реИ рдФрд░ рдЦрд╛рд▓реА рдХреИрдирд╡рд╛рд╕ рдЬрдорд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Http://szimek.github.io/signature_pad/ рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╢рд╛рдпрдж рд╕рд┐рдЧреНрдиреЗрдЪрд░рдкреИрдб рдХреЛ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдмрджрд▓рд╛рд╡ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рд▓реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдмрджрд▓рд╛рд╡ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ ... рд╢рд╛рдпрдж MutationObserver рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╡рд╣ IE10 рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдХреИрдирд╡рд╛рд╕ рддрддреНрд╡ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдХрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ? рдпрд╛ рджреЛрдиреЛрдВ - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВ рдФрд░ рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MutationObserver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ...
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдЯреАрди рдХреЗ рдЕрдВрдд рдореЗрдВ SignaturePad.clear () рдХреЙрд▓ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ #clear
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА isEmpty
true рдкрд░ рд╕реЗрдЯ рд╣реИ :) рд╡реИрд╕реЗ рднреА, рдбреЗрдореЛ рдкреЗрдЬ рдореЗрдВ #clear
рдХреЙрд▓ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рднреА рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рддрдм рддрдХ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдБ рдЬрдм рддрдХ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред
рд╕рднреА, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдФрд░ # 32 рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛, 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!
рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдСрдЯреЛрдбреНрд░реЙрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк signatureCopy
onEnd
рдХреЙрд▓рдмреИрдХ (hasSignature рдХреЗ рд╕рд╛рде, рдпрд╛ рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ) рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдзрд┐ рд╕реЗ nulling рдХрд░рдХреЗ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреЙрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред )ред рдЪреВрдВрдХрд┐ рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╕реБрдкрд░ рдХрдо рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рдмрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдкрд░: рдЬрдм рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ http://szimek.github.io/signature_pad/ рдкрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдореИрдВрдиреЗ рд░рд┐рдЬрд╝реЗрдЬрд╝реЗрдХреЗрдирд╡рд╛рд╕ () рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ 2 рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝ рджреАрдВ рдФрд░ рдпрд╣ 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
}
@niteshluharuka рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдзреБрдВрдзрд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?
@ рдбрд╛рдпрдореЛрдЬрд╕ рдирдВ, рдпрд╣ рдкреВрд░реЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдерд╛ред рдзреБрдВрдзрд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ :)
рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ: https://github.com/szimek/signature_pad/issues/33#issuecomment -298242020
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рд░рд┐рдЬрд╝реЗрдЬрд╝реЗрдХреЗрдирд╡рд╛рд╕ () рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ 2 рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝ рджреАрдВ рдФрд░ рдпрд╣ IE / FF / Chrome- рдореЗрдВ рдЕрдм рддрдХ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ