Html2canvas: 'SVGElement.offsetWidth' рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдкреНрд░реИрд▓ 2016 рдХреЗ рдЖрд╕рдкрд╛рд╕ M50 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  26рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: niklasvh/html2canvas

Google рдиреЗ SVG рдХреЗ рд▓рд┐рдП "offsetWidth" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ?

рдбреЙрдХреНрдЯрд░: https://www.chromestatus.com/features/5724912467574784

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ ... рдореИрдВ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдпрджрд┐ рдореИрдВ
рд╕рдордп рд╣реИред рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ... рдпрд╣ FF, Safari рдФрд░ Chrome рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╢реНрд░реЗрд╖реНрдаред
рдмреБрдз, 29 рдЬреВрди 2016 рдХреЛ 19:00 рдмрдЬреЗ, рдпреБрдХреА рдХреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@Dayjo https://github.com/Dayjo рд╣рд╛рдВ, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рднреА рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИред рдПрд╕рд╡реАрдЬреА рд╣реИрдВ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЕрдм рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд░ рд╣реИрдВ
рд╕рднреА рдСрдлрд╝рд╕реЗрдЯ* рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рднреА рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╣рд╛рде рдЖрдЬрдорд╛рдпрд╛
рдпрд╣ рд░рд┐рдХрд░реНрд╕рд┐рд╡ getBoundingClientRect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ :( рдореИрдВ рдПрдХ рд▓реВрдВрдЧрд╛
рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдХреЛ рджреЗрдЦреЛред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/niklasvh/html2canvas/issues/846#issuecomment -229420457,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe/ABWsecUQ2l-rxisMZ4HCKu1nh-mbIMU1ks5qQqSQgaJpZM4IDr12
.

рд╕рднреА 26 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕реЗ рдЙрдард╛рдиреЗ рд╣реА рд╡рд╛рд▓рд╛ рдерд╛! рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рдХреБрдЫ рдЗрд╕ рдорд╣реАрдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред

рд╣рд╛рдВ, рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдУрдкреЗрд░рд╛ 37 рдмреАрдЯрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реИ, рд╡реЗ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддреЗ?

рдбреЗрдореЛ рдореЗрдВ рднреА, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдФрд░ рдмреЙрд░реНрдбрд░ рдирд╣реАрдВ рджрд┐рдЦрддреЗ ((

рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдПрд╕рд╡реАрдЬреА рдЕрдм рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рднреАрддрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЕрдкрд░рд╛рдзреА рд╣реИ:

function offsetBounds(node) {
    var parent = node.offsetParent ? offsetBounds(node.offsetParent) : {top: 0, left: 0};

    return {
        top: node.offsetTop + parent.top,
        bottom: node.offsetTop + node.offsetHeight + parent.top,
        right: node.offsetLeft + parent.left + node.offsetWidth,
        left: node.offsetLeft + parent.left,
        width: node.offsetWidth,
        height: node.offsetHeight
    };
}

lines 1887 - 1898 html2canvas.js . рдореЗрдВ

рд╕рднреА offsetTop, offsetLeft, offsetWidth, offsetHeight рдЕрдм SVGs рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ

рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдорд╛рдзрд╛рди getBoundingClientRect() , рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рднреА рдЗрд╕ рдмрд╛рдд рд╕рдорд╛рдзрд╛рди рд╣реИ?

@MarcBalaban рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╡рд╛рдкрд╕реА рдХреЗ рдКрдкрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛;

if ( node.tagName === 'SVG' ) {
    return node.getBoundingClientRect();
  }

@Dayjo рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдирд╣реАрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рд╛рдЗрди

var parent = node.offsetParent ? offsetBounds(node.offsetParent) : {top: 0, left: 0};

рдпрд╛ рддреЛ рдареАрдХ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рддреЛ рдСрдлрд╕реЗрдЯрдкреИрд░реЗрдВрдЯ рдХреЛ рднреА рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд╣рдореНрдо рд╣рд╛рдБ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдФрд░ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕реЗ рдпрд╣рд╛рдВ getBoundingBoxInArbitrarySpace рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/svg.js http://stackoverflow.com рдХреЗ рдЕрдиреБрд╕рд╛рд░

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдерд╛ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░? рдзрдиреНрдпрд╡рд╛рдж!

@chemitaxis - рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЕрдм рддрдХ рдореБрдЭреЗ html2canvas рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░реЛрдо рдореЗрдВ рдХрдм / рдХрдм рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЕрдм рдХреНрд░реЛрдо рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдпрд╛ рддреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдпрд╛ рдЧрд▓рдд рдкреИрдорд╛рдиреЗ рдкрд░/рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВред

@niklasvh - рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЦреБрд╢реА-рдЦреБрд╢реА рдПрдХ рдлрд┐рдХреНрд╕ рдкрд░ рдмреИрд╢ рдХрд░ рд▓реЗрддрд╛ рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдореИрдВ рдЪреЛрдХрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/svg.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкрд░ рдПрдХ рд╢реЙрдЯ рд▓рдЧрд╛рдпрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╣рд╛рдВ рд╣реИ, рдореИрдВрдиреЗ offsetBounds рдФрд░ getBounds рдлрд╝рдВрдХреНрд╢рди рджреЛрдиреЛрдВ рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХреЙрд░реНрдб рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рд╕рднреА рдЧрд▓рдд рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрд╕рд╡реАрдЬреА рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреА 100% рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдСрдЯреЛ рдКрдВрдЪрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреБрдЫ рдФрд░ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд╛рдЦрд╛ рдЪрд▓ рд░рд╣реА рд╣реИ (https://github.com/Dayjo/html2canvas/tree/issue-846)ред рдЕрдЧрд░ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ dist рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдмрд╕ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдкрддрд╛ рдирд╣реАрдВ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ / рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

@Dayjo рд╣рд╛рдБ, рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИред рдПрд╕рд╡реАрдЬреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЕрдм рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд░ рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдСрдлрд╕реЗрдЯ * рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд░рд┐рдХрд░реНрд╕рд┐рд╡ getBoundingClientRect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рднреА рдЕрдкрдирд╛ рд╣рд╛рде рдЖрдЬрдорд╛рдпрд╛ - рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ :( рдореИрдВ рдЖрдкрдХреА рд╢рд╛рдЦрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ ... рдореИрдВ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдпрджрд┐ рдореИрдВ
рд╕рдордп рд╣реИред рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ... рдпрд╣ FF, Safari рдФрд░ Chrome рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╢реНрд░реЗрд╖реНрдаред
рдмреБрдз, 29 рдЬреВрди 2016 рдХреЛ 19:00 рдмрдЬреЗ, рдпреБрдХреА рдХреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@Dayjo https://github.com/Dayjo рд╣рд╛рдВ, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рднреА рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИред рдПрд╕рд╡реАрдЬреА рд╣реИрдВ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЕрдм рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд░ рд╣реИрдВ
рд╕рднреА рдСрдлрд╝рд╕реЗрдЯ* рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рднреА рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╣рд╛рде рдЖрдЬрдорд╛рдпрд╛
рдпрд╣ рд░рд┐рдХрд░реНрд╕рд┐рд╡ getBoundingClientRect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ :( рдореИрдВ рдПрдХ рд▓реВрдВрдЧрд╛
рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдХреЛ рджреЗрдЦреЛред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/niklasvh/html2canvas/issues/846#issuecomment -229420457,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe/ABWsecUQ2l-rxisMZ4HCKu1nh-mbIMU1ks5qQqSQgaJpZM4IDr12
.

@chemitaxis рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред

рдЕрд░реЗ @chemitaxis , рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛ рддреЛ рдХреНрдпрд╛ рдЖрдк рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@chemitaxis рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐? рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рднреА рдПрд╕рд╡реАрдЬреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдИрдИ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд╣рд╛рдп @atdiff :) рдореИрдВрдиреЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рд▓реА рд╣реИ ...

рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдореИрдВ рдХреНрд░реЛрдо рдореЗрдВ рдареАрдХ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рд╡реАрдЬреА рднреА рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдлрд╛рд░реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдПрд╕рд╡реАрдЬреА рдЗрдирд▓рд╛рдЗрди рддрддреНрд╡ рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝ рджреА рдереАред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рдЧрд▓рдд рдЪреМрдбрд╝рд╛рдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХреНрд░реЛрдо рдФрд░ рд╕рдлрд╛рд░реА рджреЛрдиреЛрдВ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

    var deferred = $q.defer();

    element.find('svg').attr('width', '100px');

    html2canvas(element, {
        background: '#eee',
        onrendered: function(canvas) {
            var a = document.createElement('a');
            a.href = canvas.toDataURL('image/jpeg', 1).replace('image/jpeg', 'image/octet-stream');
            a.download = fileName + '.jpg';
            a.click();
            deferred.resolve();
        }
    });

    return deferred.promise;

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдпрд╣рд╛рдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрд░реА рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореЗрд░реЗ SVG рдореЗрдВ рд╣реЗрдХреНрд╕ рд░рдВрдЧреЛрдВ рдХреЗ рд▓рд┐рдП # рдЪрд┐рд╣реНрди рдереЗ (рдЙрджрд╛: #ccc)ред рдЪреВрдВрдХрд┐ рдпреЗ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдг рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЦреНрдд рд╣реИ, рдПрд╕рд╡реАрдЬреА рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реБрдЖред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрд░рдЬреАрдмреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

@ jgunderson-IAS рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬрд╝рдорд╛рдКрдБрдЧрд╛ред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдмрдЧ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдПрдХ рджрд┐рди рдмрд┐рддрд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓реЗрдЧрд╛, рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕ рдкрд░ рдЖрдзрд╛ рджрд┐рди, рдлрд┐рд░ рдЖрдзрд╛ рджрд┐рди рдЬреЛ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рдиред

@niklasvh рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рджреЗрдЦрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдлрд┐рдХреНрд╕ рдХреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рджреЗрдЦреЗрдВ: https://github.com/niklasvh/html2canvas/issues/846#issuecomment-229035694 )

@ jgunderson-IAS рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрд╕рд╡реАрдЬреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕ рд╣реИрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдкреНрд░рд╕реНрддреБрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдХрд╛рд░ рдЕрд╕рдВрдЧрдд рд╣реИ, рдореИрдВ рдКрдВрдЪрд╛рдИ рдФрд░ рд╡рдЬрди рджреЛрдиреЛрдВ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рднреА рд╡реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ 'рд╕реНрдХреНрд╡реИрд╢' рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ 'ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рдкреГрд╖реНрда рд╕реАрдПрд╕рдПрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрд╕рд╡реАрдЬреА рдЖрдХрд╛рд░реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ 100% рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдХрджрдо рдкрддреНрдерд░ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдХрд╛рд░ рдХреА рд╕рд╣реА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛

рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ svgs рдЕрдм рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдореВрд▓ рддрддреНрд╡ рдЪреМрдбрд╝рд╛рдИ (рд╕рднреА svgs рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ 100% рдЪреМрдбрд╝рд╛рдИ рдкрд░ рд╕реЗрдЯ рд╣реИрдВ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 'рдСрдирдХреНрд▓реЛрди' рдШрдЯрдирд╛ рдкрд░ рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдКрдВрдЪрд╛рдИ рдЗрд╕реЗ рдФрд░ рднреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣реА рд╣реИ;

рдПрдЪрдЯреАрдПрдордПрд▓

image

рдХреИрдирд╡рд╛рд╕

image

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ;

onclone: function(doc){
    var w,h;
    var svgs = doc.querySelectorAll('svg');
    for ( var s = 0; s < svgs.length; ++s ) {
        w = svgs[s].parentElement.offsetWidth;
        svgs[s].setAttribute('width', w );
    }
}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ svg рдкрд░ рд╣реА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ (рдкрддреНрддреА) svg, рдЕрдиреНрдп рджреЛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ html2canvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ ( wkhtmltoimage ) рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ svgs рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ getBoundingClientRect рдпрд╛ getBBox рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдкрд░ рд▓рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛

1.0.0 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dking3876 picture dking3876  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tibewww picture tibewww  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stevencherry1 picture stevencherry1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AlphaDu picture AlphaDu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

anthonymejia picture anthonymejia  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ