๋ง์ง๋ง ์ปค๋ฐ์ด 2016๋ 1์์ ์์๋ ๊ฒ์ ๋ณด๋ Pull ์์ฒญ๊ณผ ๋ฌธ์ ๊ฐ ์์ฌ๊ฐ๊ณ ์์ต๋๋ค. ๊ธ์ด์ด๋ github๋ twitter์์ ํ๋์ ํ์ง ์๋๋ฏ...
์ด ํ๋ก์ ํธ์ ํ์ฑ ํฌํฌ๊ฐ ์๋์ง ๊ถ๊ธํฉ๋๋ค. @eKoopmans ๊ฐ https://github.com/eKoopmans/html2canvas์ ์๋ตํ๊ฑฐ๋ PR์ ์ ์ถํ๋ ์ฃผ์ ์ฌ๋ ์์ ์ ์ ์์ต๋๋ค .
๊ทธ๊ฒ์ ๋๋ผ์ด ํ๋ก์ ํธ์ด์ง๋ง ์น ๊ฐ๋ฐ์ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฏธ์น ์๋๋ก ์งํ๋๊ณ ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฌํ ๋ชจ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
@aparij ๋ , ์ต๊ทผ ๋ช ๋ ๋์ ์ด ํ๋ก์ ํธ๋ฅผ ํ ์๊ฐ์ด ์์์ต๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ ์ด๋ฅผ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง ์์ผ๋ก ๋์๊ฐ๋ฉด ์ปค๋ฎค๋ํฐ๊ฐ ํ๋ก์ ํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๋ฐ ๋ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฌ๊ธฐ์๋ ๋ถ๋ช ํ ์ ์๊ฒ๋ ๋ ๋ง์ ์ฐธ์ฌ๊ฐ ํ์ํฉ๋๋ค.
ํ์ฌ ์ ๋ ํ๋ก์ ํธ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ค์ ์์ฑํ๋ ์์ ์ ํ๊ณ ์์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ๋ฌธ์๋ฅผ ์ด๋ฏธ์ง๋ก ๋ ๋๋งํ๋ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ์ธก๋ฉด์ ํ๋ก์ ํธ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ช ๊ฐ์ง ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. ์ฃผ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@niklasvh ์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ต๊ทผ์ ์์ ์๊ฐ์ด ๋ง์ง ์๊ณ ์ฝ๊ฐ์ ์ง์ ๋ณํ๊ฐ ์์์ง๋ง ์์ผ๋ก ๋์๊ฐ ๋ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ๋๋ ํ์คํ ํจํค์ง์ ๊ฐ์ฌํ๊ณ ๋น์ ์ด ๊ทธ๊ฒ์ ๋ํ ๋ ๋ง์ ๊ณํ์ ๊ฐ์ง๊ณ ์๋ค๋ ์์์ ๋ฃ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
SVG ๋ ๋๋ง ์ต์ ์ ๊ณ ๋ คํ๋์ง๋ ๊ถ๊ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ธฐ ? ๊ธฐ์กด ๊ตฌํ์์ ํฐ ๋ณํ๊ฐ ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ณ์ ์ผ๋ก ์คํ์ผ์ ๊ตฌํํด์ผ ํ๋ ๋ง์ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ํผํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๋จ์ ์ ์๊ณ ์์ต๋๊น?
๋ฉ์ง๋ค์ @eKoopmans! ๋๋ ๋น์ ์ด ๋ง์ PR์ ์ ์ถํ ๊ฒ์ ๋ณด์๊ณ , ๋ฐ๋ผ๊ฑด๋ ์ ์ด๋ ๊ทธ๋ค ์ค ๋๋ถ๋ถ์ ๋ค์ ๋ฒ์ ์ ํตํฉ๋ ๊ฒ์ ๋๋ค.
foreignObject
๋ ๋๋ง๊ณผ ๊ด๋ จํ์ฌ ์ค๋ซ๋์ ์ฌ์ฉ๋์ด ์์ผ๋ฉฐ ์ผ๋ถ ์ด์ ๋ฒ์ ์ html2canvas์์ ์ด๋ฅผ ํ์ฉํ์ต๋๋ค(https://github.com/niklasvh/html2canvas/blob/0.4.1/src/ ์ง์ํ๋ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ Support.js#L3 https://github.com/niklasvh/html2canvas/blob/0.4.1/src/Util.js#L18 ). ๋ถํํ ์ ์ Firefox๊ฐ ์บ๋ฒ์ค๋ฅผ ์์์ํค์ง ์๊ณ ์ฝํ
์ธ (์ด๋ฏธ์ง ํฌํจ) ๋ ๋๋ง์ ์ง์ํ๋ ์ ์ผํ ๋ธ๋ผ์ฐ์ ๋ผ๊ณ ์๊ฐํ๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ค์ ๋ก Firefox์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. Chrome์ด ๊ฐ์ ๋์์ง๋ง(์ง์ํ๋ ๊ธฐ๋ฅ์ ์์ธํ ์ถ์ ํ์ง๋ ์์์ง๋ง) ์ฌ์ ํ ํ์ ๋ฆฌ์์ค(์: ์ด๋ฏธ์ง)๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์ ์ฒด ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ ์คํธ ๋ ๋๋ง๊ณผ ๊ฐ์ ์ผ๋ถ ์์ ๋ถ๋ถ์ ํ์ฉ๋ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ํ์ฌ html2canvas๊ฐ ํ๊ณ ์๋ ๊ฒ(ํ ์คํธ ๋ฒ์ ์ธก์ )๋ณด๋ค ๋ ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ธ์ง ์ฌ๋ถ๋ ํ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. afaik IE/Safari๋ ์บ๋ฒ์ค๋ฅผ ์ฆ์ ์ค์ผ์ํค์ง ์๊ณ ๋ foreignObject ์ฝํ ์ธ ์ ๋ ๋๋ง์ ์ง์ํ์ง ์์ต๋๋ค.
@niklasvh ๋ฐ๊ฐ์์ ๐ , ๋ค์ ๋ฒ์ ์ ์ธ์ ๋์ค๋์?
์ฌ๊ธฐ์์ ํ๋ก์ ํธ ํญ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ ์ธํธ ๋ฐ ๋ฆด๋ฆฌ์ค ๊ณํ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฌ๋๋ค์ด ๋ก๋๋งต์ ๋ณด๋ค ์ฝ๊ฒ โโ๋ณผ ์ ์๊ณ ํ๋ก์ ํธ๋ฅผ ๊ฒ์ฌ, ๊ฐ์ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ์ปค๋ฎค๋ํฐ๋ก ์ ๊ทน์ ์ผ๋ก ํ๋ ฅํ ์ ์์ต๋๋ค.
๋ถ๋ช ํ ๋จ์ง ์ ์์ผ ๋ฟ์ ๋๋ค. ๋ด๊ฐ ๋น๋๋ฐ์ฑ์ ํ๋ ๋์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ @niklasvh๋ฅผ ํ๋ผ๊ณ ์ ์ํ๊ณ ์ถ์ ๋ช ๊ฐ์ง ์ผ์ด ์์ต๋๋ค.
๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ ์ ๋ฆฌํฉ๋๋ค. ์ค์ ๋ก 659๊ฐ์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ์ ๋ง ๋ง๋ค์. ์ฌํด ์ดํ๋ก ์ ๋ฐ์ดํธ๋์ง ์์ ๋ชจ๋ ํญ๋ชฉ์ ๋ซ๋ ๊ฒ์ผ๋ก ์์ํ๊ฒ ์ต๋๋ค. ์ ์๊ฐ์๋ 5/27ํ์ด์ง ์ ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค๋ณต ํญ๋ชฉ์ ์ฐพ์ผ์ญ์์ค. ์์ ํ ์ฃผ์ ๋ฌธ์ ๋ฅผ ์ ํํฉ๋๋ค. ์ง๊ธ์ ๊ณผ์ ์ฑ์ฅ์ ๋ณด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
pull ์์ฒญ๋ ๊ฐ์ง์น๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค. ์น์ธ๋์ง ์์ ์ด์ ๋ฅผ ์ค๋ช ํ๊ฑฐ๋, ์ด๋ฅผ ์์ ํ ๋ถ์ธํ๊ณ ๊ณ์ ์งํํ์ญ์์ค. ๊ฐ์ ํ์๋ผ์ธ์ ์ ์ํ ์๋ ์์ต๋๋ค. ์ฌํด๋ณด๋ค ์ค๋๋ ํ์๋ผ์ธ์ ๋ซ์ ์ ์์ต๋๋ค. ์ง์ง ๋ฌธ์ ๋ผ๋ฉด ๋ค์ ๋์์์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ ํ์ ์๊ฐ๊ณผ ์๋์ง๋ฅผ ์ด ํ๋ก์ ํธ์์ ์กฐ์ง๋ ํญ๋ชฉ, ์ฌ์ฉ๋ ๋๊ตฌ, OSS์ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋ํด ์นํ๊ฒฝ์ ์ธ ์ฐ๋ฆฌ๋ฅผ ์ํ ์งง์ ์๊ฐ์ ๋ํด ์ด๋ป๊ฒ ๊ตฌ์ฑํ๊ณ ์ถ์์ง์ ๋ํ ๊ธฐ์ฌ ๊ฐ์ด๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์คํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@eKoopmans ์ ๊ฐ์ ์ฌ๋ฌ PR์ ์ ์ถํ ์ฌ๋์ OSS ์ปค๋ฎค๋ํฐ์ ๊ธ์ ๋๋ค. ์ด ์ค ์ผ๋ถ(ํนํ ๊ฐ์ง์น๊ธฐ)๋ฅผ ๋์์ค ๊ณต์ ํ๋ ฅ์๋ฅผ ์ถ๊ฐํ์ธ์.
@luck2011 ์ ํํ ์ผ์ ์ ์๋ ค๋๋ฆด ์๋ ์์ง๋ง ๊ณง ์๋ํ๊ณ ํ ์คํธ ๊ฐ๋ฅํ ๋ถ๊ธฐ๊ฐ
@markadrake ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ ๋ ์ต๊ทผ์ ๊ณต๊ฐ๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ํ์คํ ์ดํด๋ณด๊ณ ํด๊ฒฐํด์ผ ํ๋์ง/ํด๊ฒฐํ ์ ์๋์ง ํ์ธํ ๋ค์ ์
๋ฐ์ดํธ/๋ซ๊ณ ๊ฐ ํ ์์ฒญ์ ํตํด ๋ค์ ๋ฆด๋ฆฌ์ค์ ๋์ด์ค๋ ๊ฒ์ด ํ๋นํ์ง ํ์ธํฉ๋๋ค. .
์ดํ๋ถํฐ๋ ์ ์ํ์ ๋๋ก ์ ์ ๊ณต๋ ์์ ์๊ฐ ๋ ์ฝ๊ฒ ๊ธฐ์ฌํ ์ ์๋๋ก ๋ ธ๋ ฅํ์ฌ ๋ค์๋ ์ด๋ฐ ์ผ์ด ์์ด์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํ์ํ๊ณ ์ ์ฌ์ ์ธ ํญ๋ชฉ์ ๋ฐฑ๋ก๊ทธ๋ก ๊ฐ์ ธ์ค๊ธฐ ์์ํ์ต๋๋ค.
๐ ๋ฉ์ง๋ค @niklasvh
ํ์ฌ ์งํ ์ํฉ์ https://github.com/niklasvh/html2canvas/tree/v1.0.0์ผ๋ก ํธ์ํ์ต๋๋ค.
ํ์ฌ ๋ฒ์ ์ ๋๋ฌํ๋ ค๋ฉด ์์ง ๋ ๋ง์ ์์ ์ด ํ์ํฉ๋๋ค.
@eKoopmans https://github.com/niklasvh/html2canvas/commit/a73dbf8067c92e4f25f4db71f75643f0647cb1ac ๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ foreignObject
๋ ๋๋ง ์ง์์ ๋ค์ ๋์
ํ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ฅํ ๊ฒฝ์ฐ foreignObject
๋ ๋๋ง์ ์ฌ์ฉํ๊ณ (์ต์
์ผ๋ก ์ฌ์ ์ํ์ง ์๋ ํ) ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ์ผ๋ฐ html2canvas ๋ ๋๋ง์ผ๋ก ๋์ฒดํฉ๋๋ค.
ํ๋ฅญํฉ๋๋ค. ์ข์ ์์์ธ ๊ฒ ๊ฐ์์! ์กฐ๋ง๊ฐ ํํ ํด๋ด์ผ๊ฒ ๋ค์. ํ๋ก์ ํธ์์ ์๊ณ ๋ง์ผ์ จ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
@niklasvh , ์ฐ์ํ ํ๋ก์ ํธ ๋ฐ ๋ค์ ํ์ฑํ๋์์ต๋๋ค!!
์์๋ค์ํผ ๋น๋์ค๋ ๊ธฐ๋ณธ ํ๊ทธ์ด๋ฏ๋ก ์ด ์์ ์ฌํญ์ ์๋ฝ ํ ์ ์์ต๋๊น?
ํ๋ฅญํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์๋ ํ์ธ์ @niklasvh , ๋ฒ์ 1.0.0์ ์ํ๋ ๋ฌด์์ ๋๊น? v1.0.0 ๋ถ๊ธฐ๊ฐ ์ฌ์ ํ ํ์ฌ ์งํ ์ํฉ์ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ชจ๋ ๋ ธ๋ ฅ์ ๋ํด Thx!
@jyguyomarch v1.0.0์ด ์ต์ ๋ฒ์ ์ 1.0.0 ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๋ ๋ง์คํฐ๋ก ์ด๋ํ์ต๋๋ค. ์ํ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ svg ๋ ๋๋ง๊ณผ ์ ์ฒด ๋ฌธ์์ ๊ฐ์ ์ด ์ฌ์ ํ ๋๋ฝ๋์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ ํ, ์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค๋ฅผ ์ถ์ํ๊ณ ๋ณด๋ฅ ์ค์ธ ๋ค๋ฅธ ๋ชจ๋ ๋ฌธ์ /PR์ ์ ๋ฆฌํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
1.0.0 ๋ฆด๋ฆฌ์ค์ ๊ฐ๊น์์ง๋ฉด ๋ซ์ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@aparij ๋ , ์ต๊ทผ ๋ช ๋ ๋์ ์ด ํ๋ก์ ํธ๋ฅผ ํ ์๊ฐ์ด ์์์ต๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ ์ด๋ฅผ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง ์์ผ๋ก ๋์๊ฐ๋ฉด ์ปค๋ฎค๋ํฐ๊ฐ ํ๋ก์ ํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๋ฐ ๋ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฌ๊ธฐ์๋ ๋ถ๋ช ํ ์ ์๊ฒ๋ ๋ ๋ง์ ์ฐธ์ฌ๊ฐ ํ์ํฉ๋๋ค.
ํ์ฌ ์ ๋ ํ๋ก์ ํธ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ค์ ์์ฑํ๋ ์์ ์ ํ๊ณ ์์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ๋ฌธ์๋ฅผ ์ด๋ฏธ์ง๋ก ๋ ๋๋งํ๋ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ์ธก๋ฉด์ ํ๋ก์ ํธ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ช ๊ฐ์ง ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. ์ฃผ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.