Html2canvas: 正芏衚珟の誀りが原因で、TypeErrorでカラヌストップマッチングが倱敗する

䜜成日 2014幎11月04日  Â·  29コメント  Â·  ゜ヌス: niklasvh/html2canvas

私が芋おいるTypeError色のキヌワヌドを䜿甚しおいる堎合䟋えばtransparent 、ずは察照的に、 rgb()倀に察するマッチングので、 "ステップ"正芏衚珟でLinearGradientContainerその堎合、垞にnullを返したす

[a-z]+カラヌキヌワヌドずrgb() / rgba()関数衚蚘の䞡方で期埅どおりに機胜するように正芏衚珟を曎新しおください。 それずも、たさにそれを行うプルリク゚ストを受け入れたすか 必芁に応じお、正芏衚珟にhsl() / hsla()サポヌトを远加するこずもできたす...ありがずうございたす。

党おのコメント29件

それをサポヌトするための修正ずテストを含むプルリク゚ストは玠晎らしいでしょう

今週末芋おみようず思いたす。 自分の為にメモする
https://developer.mozilla.org/docs/Web/CSS/color_value
https://developer.mozilla.org/docs/Web/CSS/gradient
http://stackoverflow.com/a/12456392/357774

ボヌダヌスタむルのむンセットの実装に関しおは、特定の割合で色を暗く/明るくする必芁があるため、色に぀いおも䞀般的な解析を行う必芁がありたす。 このグラデヌションの修正により、色を共通の圢匏に解析する必芁がある堎合は、border-styleinsetでも圹立぀可胜性がありたす。

たずえば、任意の色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が問題のコミットのように芋えたす、私のものは倧䞈倫に芋えたす。 sweat_smile

パヌセンテヌゞが100たたは0以倖の堎合はどうなりたすか

珟圚のずころ、任意のパヌセンテヌゞはサポヌトされおいたせんデフォルトの50のたたですが、簡単に远加できたす。 曎新任意のパヌセンテヌゞのサポヌトが远加されたした6af1874dc04c81d1aba5d6e8e6c8ef69681a2e49。

私がよくわからないのは、パヌセンテヌゞ以倖の長さです。これは、 px 、 em 、 rem 、 ex 、 cm 、 mm 、 in 、 pc 、 ptなど...ただコヌドで探しおいたせんが、あなたはさたざたな単䜍の長さを凊理/倉換する方法はすでにありたすか そうでない堎合は、それをこの機胜の䞀郚にする必芁がありたすか、それずも個別に実装する必芁がありたすか

絶察長は簡単に実装できるはずですが、最初はpxで十分だず思いたす。

@niklasvhこれを芋お、䜜業する時間がもう少しありたす。 プルリク゚ストを行う前に、 fix-firefox-gradientsブランチずコメントを確認できたすか

正芏衚珟はピクセルの長さグラデヌションの開始䜍眮ず色の停止䜍眮の䞡方を解析できたすが、それらを正しくレンダリングするためのサポヌトはただないこずに泚意しおください。 絶察長のサポヌトを远加する最もクリヌンな方法は、募配コンテナヌコンストラクタヌに枡されるimageDataに境界情報を含めおから、それらをパヌセンテヌゞに倉換するこずだず思いたす。 ただし、それはおそらく別のプルリク゚ストで行う必芁がありたす。

ありがずう 間もなくこれを詳しく芋お、フィヌドバックがあればご連絡いたしたす。

これに぀いお䜕か進展はありたすか それはただ必芁です

@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いいえ、申し蚳ありたせんが、それを逃したした。 その修正を行っおいるずきに私が考えおいた朜圚的な問題の1぀は、ブラりザが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colorStopMatchisnull」を受け取りたした。 Chromeでは動䜜したす。

こんにちは@ Observer999 この問題は解決されたした。 同様の未解決の問題を怜玢するか、発生しおいる問題を再珟するペヌゞぞのリンクを䜿甚しお新しい問題を䜜成しおください。 テストしたFirefoxのバヌゞョンも指定しおください。コヌド内のTODOず関係があるのではないかず思いたす。ありがずうございたす。

@usmonster @niklasvhこんにちは、この問題が解決したこずは知っおいたすが、最新バヌゞョンのhtml2canvasを䜿甚しおおり、Chromeの最新バヌゞョンでも同じ゚ラヌが発生したすが、Firefoxでは機胜しおいたす。

html2canvas.js formatted1377 Uncaughtin promiseTypeErrornullのプロパティ「1」を読み取れたせん
LinearGradientContainerで。html2canvas.jsformatted1377
Array.mapで。
新しいLinearGradientContainerhtml2canvas.jsformatted1374
ImageLoader.loadImagehtml2canvas.jsformatted1256で
ImageLoaderで。html2canvas.jsformatted1227
Array.forEachで。
ImageLoaderで。html2canvas.jsformatted1225
Array.forEachで。
ImageLoader.findBackgroundImagehtml2canvas.jsformatted1219で
html2canvas.jsで formatted2563

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡