๋ด๊ฐ๋ณด๊ณ ์์ด์ TypeError
์ปฌ๋ฌ ํค์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ (์ : transparent
, ๋ฐ๋๋ก rgb()
๊ฐ)์ ๋ํ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์ "๋จ๊ณ"์ ๊ท ํํ์ ์์ LinearGradientContainer
์ด ๊ฒฝ์ฐ ํญ์ null
๋ฅผ ๋ฐํํฉ๋๋ค( ์ด ์ค ์ฐธ์กฐ ).
[a-z]+
์์ ํค์๋์ rgb()
/ rgba()
๊ธฐ๋ฅ ํ๊ธฐ๋ฒ ๋ชจ๋์์ ์์๋๋ก ์๋ํ๋๋ก ์ ๊ท ํํ์์ ์
๋ฐ์ดํธํ ์ ์์ต๋๊น? ์๋๋ฉด ๊ทธ๋ฅ ๊ทธ๋ ๊ฒ ํ๋ ํ ๋ฆฌํ์คํธ์ ๋ง์์ ์ฌ์๊ฒ ์ต๋๊น? (์ํ๋ค๋ฉด ์ ๊ท ํํ์์ hsl()
/ hsla()
์ง์์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.) ๊ฐ์ฌํฉ๋๋ค!
์ด๋ฅผ ์ง์ํ๊ธฐ ์ํ ์์ ๋ฐ ํ ์คํธ๊ฐ ํฌํจ๋ pull ์์ฒญ์ ํ๋ฅญํ ๊ฒ์ ๋๋ค!
์ด๋ฒ ์ฃผ๋ง์ ๋ณด๋ ค๊ณ ํฉ๋๋ค. ์์ ์ ๋ํ ์ฐธ๊ณ ์ฌํญ:
https://developer.mozilla.org/docs/Web/CSS/color_value
https://developer.mozilla.org/docs/Web/CSS/gradient
http://stackoverflow.com/a/12456392/357774
ํ ๋๋ฆฌ ์คํ์ผ ์ฝ์ ๊ตฌํ๊ณผ ๊ด๋ จํ์ฌ ํน์ ๋น์จ๋งํผ ์์์ ์ด๋ก๊ฒ/๋ฐ๊ฒ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์์ ๋ํ ๊ณตํต ๊ตฌ๋ฌธ ๋ถ์๋ ํ์ํฉ๋๋ค. ์ด ๊ทธ๋๋์ธํธ ์์ ์ ํตํด ์์์ ๊ณตํต ํ์์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ํ ๋๋ฆฌ ์คํ์ผ: ์ฝ์ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ์์(hex, rgb, rgba, hls, hlsa, 'red', 'green' ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ ์ ์๋ ์ด๋ฆ)์ด r, g, b ๋ฐ ์ ์๋ ๊ฐ์ ์ฌ์ฉํ์ฌ Color ๊ฐ์ฒด๋ก ๊ตฌ๋ฌธ ๋ถ์๋ ์ ์๋ ๊ฒฝ์ฐ ํ ๋๋ฆฌ ์ฝ์ ๋ ํจ์ฌ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ณตํต ์์ ๊ตฌ๋ฌธ ๋ถ์/ํํ์ ์ฌ์ฌ์ฉํ ์ ์๊ณ ์ฌ์ฌ์ฉํด์ผ ํ๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ผ๋์๋๊ณ ์๋ง๋ ์ง๋ฌธ์ด์์ ๊ฒ์ ๋๋ค.
์ฃผ๋ง์ ์ด๊ฒ์ ๋ณผ ๊ธฐํ๊ฐ ์์์ต๋๋ค. ์๋ง๋ ๋ด์ผ ์๊ฐ์ด ์์ ๊ฒ์ ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ด, ์ฃ์กํฉ๋๋ค. ์์ง ์๋๋๋ค. :/ ๋ก์ปฌ์์ ์ผ๋ถ ํ ์คํธ๋ฅผ ์ค์ ํ์ง๋ง(์์ง ์๋ฌด ๊ฒ๋ ๊ตฌํํ์ง ์์) ํฉ์ธ๋ฆฌ๊ณ ์ปดํจํ ๋ฆฌ์์ค๊ฐ ์ ํ์ ์ด์์ต๋๋ค.
๊ธฐ๋ณธ ์์ ๊ตฌ๋ฌธ ๋ถ์(์ง๊ธ๊น์ง rgb, rgba, hex3 ๋ฐ hex6์ผ๋ก ๋ช ๋ช ๋จ)์ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ๋ชจ๋ ์์ ์ฌ์ฉ์ ๋ณ๊ฒฝํ์ต๋๋ค. ๊ทธ๋ผ๋ฐ์ด์ ์ ๊ท์์ ์์ง ์ ๋ฐ์ดํธ๋์ง ์์์ต๋๋ค.
https://github.com/niklasvh/html2canvas/commit/313c227a1fed416331978e365ef82000ea7f7aa5 ์ฐธ์กฐ
๋ฉ์ง! ์ด๋ฒ ์ฃผ๋ง์ ์ด ์ ๊ท์์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
@niklasvh ๋ฐฉ๊ธ ๋ด ๋ธ๋์น(359ee8b)์์ ๋ง๋ ์ปค๋ฐ์ ๋ณด๊ณ ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ค ์ ์๋์? ๋ด ๋ถํ์ํ ์ฃผ์์ ์ ๊ฑฐํ๊ณ ๊ณง ์์ ์ด๋ฆ์ ๋ํ ํ ์คํธ๋ฅผ ์ถ๊ฐํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ๋ณ๊ฒฝ ์ฌํญ๋ ์ดํด๋ณด์ค ์ ์์ต๋๊น?
Firefox์ ๋ํ ๋ฐฉํฅ ๊ตฌ๋ฌธ ๋ถ์์ ์์ ํ์ฌ ์ด์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋์ง ์์ ํน์ ์ ํ ๊ทธ๋ผ๋์ธํธ๊ฐ ์ด์ ์๋ํฉ๋๋ค. ๋ด๊ฐ ์์๋ก tests/lineargradients_manual.html
(๊ธฐ๋ณธ์ ์ผ๋ก tests/cases/background/linear-gradient.html
์ ๋ณต์ฌ๋ณธ)์ ๋ฃ์ ์๋ ํ
์คํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์
๋ ๋ ํ
์คํธ๋ฅผ ์คํํ ์ ์๊ฒ ๋๋ฉด ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ /๋ฒ์ ์์ ์ ํ๋๊ฐ ์ฆ๊ฐํ๊ณ ํ๊ท๊ฐ ์์์ ํ์ธํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ด ๊ด์ฐฎ์์ง ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น? ๋ ๋ ์ ํ๋ ํฅ์์ ํ
์คํธํ ๊ฒ๋ณด๋ค ์ต์ ๋ฒ์ ์ FF๋ฅผ ๋น๊ตํ์ ๋๋ง ๋ํ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. (ํ
์คํธ๋ Firefox์ ์ ์ผํ ๋ฒ์ ์ 15์ธ๊ฐ์??)
ํ , ์ ์๋ง์, ์ ๊ฐ ๋ญ๊ฐ ์ด์ํ ์ง์ ํ์ ์๋ ์์ด์. ์ ํ ๋จธ์ ์ ์ฌ๊ฐํ์ ์ด์ ๋๋ถ๋ถ ๊ฒ์์์ ๋๋ค.
์, ์๋๋๋ค. 498527918c3324dce77260057bc47c280cc3324f๊ฐ ๋ฌธ์ ์ปค๋ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ฌผ๊ฑด์ ๊ด์ฐฎ์ ๋ณด์ ๋๋ค. :๋_๋ฏธ์:
๋ฐฑ๋ถ์จ์ด 100% ๋๋ 0%๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฉ๋๊น?
ํ์ฌ๋ก์๋ ์์์ ๋ฐฑ๋ถ์จ์ ์ง์ํ์ง ์์ง๋ง(๊ธฐ๋ณธ๊ฐ 50%๋ก ์ ์ง), ์ถฉ๋ถํ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค. ( ์ ๋ฐ์ดํธ : ์์์ ๋ฐฑ๋ถ์จ ์ง์ ์ถ๊ฐ: 6af1874dc04c81d1aba5d6e8e6c8ef69681a2e49.)
๋ด๊ฐ ํ์คํ์ง ์์ ๊ฒ์ px
, em
, rem
, ex
, cm
์ผ ์ ์๋ ๋น๋ฐฑ๋ถ์จ ๊ธธ์ด์
๋๋ค. mm
, in
, pc
, pt
๋ฑ... ์์ง ์ฝ๋์์ ์ฐพ์ง ์์์ง๋ง ์ด๋ฏธ ๋ค์ํ ๋จ์์ ๊ธธ์ด๋ฅผ ์ฒ๋ฆฌ/๋ณํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? (๊ทธ๋ ์ง ์๋ค๋ฉด ์ด ๊ธฐ๋ฅ์ ์ผ๋ถ๊ฐ ๋์ด์ผ ํฉ๋๊น, ์๋๋ฉด ๋ณ๋๋ก ๊ตฌํํด์ผ ํฉ๋๊น?)
์ ๋ ๊ธธ์ด ๋ ๊ตฌํํ๊ธฐ ์ฌ์์ผ ํ์ง๋ง ์ฒ์์๋ px๋ก ์ถฉ๋ถํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@niklasvh ์ ๋ ์ด๊ฒ์ ๋ํด ์ดํด๋ณด๊ณ ์์
ํ ์๊ฐ์ด ์ข ๋ ์๊ฒผ์ต๋๋ค. ๋ด๊ฐ ํ ๋ฆฌํ์คํธ๋ฅผ ํ๊ธฐ ์ ์ ๋ด fix-firefox-gradients
๋ธ๋์น๋ฅผ ์ดํด๋ณด๊ณ ๋๊ธ์ ๋ฌ ์ ์์ต๋๊น?
์ ๊ท ํํ์์ด ํฝ์
๊ธธ์ด(๊ทธ๋ผ๋์ธํธ ์์ ์์น ๋ฐ ์์ ์ค์ง ์์น ๋ชจ๋)๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ง๋ง ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋งํ ์ ์๋ ์ง์์ ์ฌ์ ํ โโ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ ๋ ๊ธธ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ ๊ฐ์ฅ ๊นจ๋ํ ๋ฐฉ๋ฒ์ ๊ทธ๋๋์ธํธ ์ปจํ
์ด๋ ์์ฑ์์ ์ ๋ฌ๋ imageData
๊ฒฝ๊ณ ์ ๋ณด๋ฅผ ํฌํจ์ํจ ๋ค์ ์ด๋ฅผ ๋ฐฑ๋ถ์จ๋ก ๋ณํํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์๋ง๋ ๋ณ๋์ pull ์์ฒญ์ผ๋ก ๊ฐ์ผ ํ ๊ฒ์
๋๋ค.
๊ฐ์ฌ ํด์! ์ด ๋ฌธ์ ๋ฅผ ๊ณง ์์ธํ ์ดํด๋ณด๊ณ ๋ด๊ฐ ๊ฐ์ง ์ ์๋ ํผ๋๋ฐฑ์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ด์ ๋ํ ์ง์ ์ด ์์ต๋๊น? ์์ง ํ์ํฉ๋๋ค!
@niklasvh ๊ฐ ๋ด ์ง์ ์์ ์ฌ์ฉํ ์ ๊ทผ ๋ฐฉ์์
:+1: ๋ฐฉ๊ธ ์ด๊ฒ์ ๋ถ๋ช์ณค์ต๋๋ค.
TypeError: Cannot read property '1' of null at GradientContainer.<anonymous> (http://localhost:8100/all.js:34496:44)
at Array.map (native)
at GradientContainer.LinearGradientContainer (http://localhost:8100/all.js:34493:66)
at ImageLoader.279.ImageLoader.loadImage (http://localhost:8100/all.js:34367:16)
at ImageLoader.<anonymous> (http://localhost:8100/all.js:34339:46)
at Array.forEach (native)
at ImageLoader.279.ImageLoader.addImage (http://localhost:8100/all.js:34337:23)
at Array.forEach (native)
at ImageLoader.279.ImageLoader.findBackgroundImage (http://localhost:8100/all.js:34331:71)
at 295.exports.bind (http://localhost:8100/all.js:36357:25)
์๋ ํ์ธ์ @niklasvh! #526์ ์์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ด fix-firefox-gradients
์ง์ ์ ๋ณผ ๊ธฐํ๊ฐ ์์๋์? PR์ ํ๊ธฐ ์ ์ ๋ด ์ง์ ์ ๋ฆฌ๋ฒ ์ด์คํ๊ณ ์๋ก์ด ์ถฉ๋์ ์์ ํ์ง๋ง PR์ด ์ฌ์ ํ ํ์๋ฐ์ ์ ์๋์ง ์๋ ค์ฃผ์ญ์์ค. (ํฉ๋ฆฌ์ ์ธ ์๊ฐ ์์ ๊ฒํ ํ ์ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?) ๊ฐ์ฌํฉ๋๋ค!
@usmonster ์๋์, ๋์ณ์ ์ฃ์กํฉ๋๋ค. ๊ทธ ์์ ์ ํ๋ ๋์ ๋ด๊ฐ ์๊ฐํ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ค ํ๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ red
๋๋ blue
์ ๊ฐ์ ๋ช
๋ช
๋ ์์์ ๊ฐ๊ฐ์ rgb
๋๋ rgba
๋ก ๋ณํํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ์
๋๋ค. transparent
ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. Color
๋ชจ๋์ ๋ค์ํ ์์ ๋ณํ์ ๋ชจ๋ ๊ณ ๋ คํ์ง๋ง, ์ฐ์ master
์์ ํ์ฌ ๊ตฌ๋ฌธ ๋ถ์์ด ์ํ๋๋ ๋ฐฉ์์ ๋ง์กฑํ์ง ์์ต๋๋ค.
๋ช ๋ช ๋ ์์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
@niklasvh , Color
์์ฑ์๊ฐ ์ด๋ฏธ ์ํํ ์กฐํ ๋ฐ ์ ๊ทํ๋ ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ์๋ชป ์ดํดํ์ง ์๋ ํ ๋ชจ๋ ๋ช
๋ช
๋ ์์์ ์ฒ๋ฆฌํ๊ธฐ์ ์ถฉ๋ถํด์ผ ํฉ๋๊น?
๋ํ ์์ ๋ฐ ์ ํ ๊ทธ๋ผ๋์ธํธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ๊ท์์ ์์ ํ์ฌ ๋ณด๋ค ๊ฐ๋ ฅํ๊ณ ์ ํํ๋ฉฐ ์ฑ๋ฅ์ ํฅ์์์ผฐ์ผ๋ฏ๋ก ๋ช ๋ช ๋ ์์์ด ๋ฌธ์ ๊ฐ ๋์ง ์์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ป๊ฒ ์๊ฐํ๋์?
@usmonster ๋ง์์, ์ ๊ฐ ์ธ๊ธํ https://github.com/niklasvh/html2canvas/compare/master...usmonster :fix-firefox-gradients#diff-48b5afb6985c457b9f79fcca1cfb499dR21 ์ ์ด๋ฆ์ด ์ง์ ๋ ์์์ ๊ณ ๋ คํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋์ ๊ฑฐ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ข์ ๋ณด์ ๋๋ค. ๋ฆฌ๋ฒ ์ด์คํ๊ณ ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ๋ ค์ฃผ์๊ฒ ์ต๋๊น?
๊ด์ฐฎ์์! ๋๋ ์์ผ๋ก ๋ฉฐ์น ๋์ ์ดํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ์ ๋ ์ฃผ๋ง ์ฐฝ์ ๋์ณค์ต๋๋ค. :/
@niklasvh #708์ ์ฐธ์กฐํ์ญ์์ค. :)
FireFox์ html2canvas.js:1454:13์์ "TypeError: colorStopMatch is null"์ ๋ฐ์์ต๋๋ค. Chrome์์๋ ์๋ํฉ๋๋ค.
์๋ ํ์ธ์ @Observer999์ ๋๋ค! ์ด ๋ฌธ์ ๋ ์ข ๋ฃ๋์์ต๋๋ค. ์ ์ฌํ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ์ฌํํ๋ ํ์ด์ง์ ๋ํ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌธ์ ๋ฅผ ๋ง๋์ญ์์ค. (๋ํ ํ ์คํธํ Firefox ๋ฒ์ ์ ์ง์ ํ์ญ์์ค.) ์ฝ๋ ์ TODO ์ ๊ด๋ จ
@usmonster @niklasvh ์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ๊ฒ์ผ๋ก ์๊ณ ์์ง๋ง ์ต์ ๋ฒ์ ์ html2canvas๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ Chrome ์ต์ ๋ฒ์ ์์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง Firefox์์๋ ์๋ํฉ๋๋ค.
html2canvas.js: ํ์: 1377 ์กํ์ง ์์(์ฝ์ ์ค) TypeError: null์ ์์ฑ '1'์ ์ฝ์ ์ ์์ต๋๋ค.
LinearGradientContainer์์.
Array.map์์ (
์๋ก์ด LinearGradientContainer์์(html2canvas.js:formatted:1374)
ImageLoader.loadImage์์(html2canvas.js:formatted:1256)
์ด๋ฏธ์ง๋ก๋์์.
Array.forEach์์ (
์ด๋ฏธ์ง๋ก๋์์.
Array.forEach์์ (
ImageLoader.findBackgroundImage์์(html2canvas.js:formatted:1219)
html2canvas.js: ํ์:2563