WebViewがsnapshot()の準備ができるのはいつですか?
JavaFXのドキュメント状態WebView時に準備ができているWorker.State.SUCCEEDEDに達しているしばらくの間(すなわち待たない限り、しかしAnimation、Transition、PauseTransition、など)を、空白のページが表示されます。 これは、キャプチャの準備ができているWebView内で発生するイベントがあることを示唆していますが、それは何ですか? あります7,000以上のコードスニペットは、GitHubの上でその使用SwingFXUtils.fromFXImageが、それらのほとんどがどちらかに無関係と思われるWebView、インタラクティブ(ヒトマスクは競合状態)であるか、(100ミリ秒から2,000msまでの任意の場所)任意のトランジションを使用しています。 私はもう試した: の寸法changed(...)内からリッスンしますWebView(高さと幅のプロパティDoublePropertyはObservableValue、これらのものを監視できます) 🚫実行できません。場合によっては、値がペイントルーチンとは別に変化して、部分的なコンテンツになることがあります。 runLater(...)FXアプリケーションスレッドで何でもすべてを盲目的に伝える。 techniques多くの手法でこれを使用していますが、私自身の単体テスト(および他の開発者からの素晴らしいフィードバック)は、イベントがすでに正しいスレッドにあることが多く、この呼び出しは冗長であることを説明しています。私が考えることができる最高のものは、それがいくつかのために働くキューイングを通しての遅延のちょうど十分な追加です。 DOMリスナー/トリガーまたはJavaScriptリスナー/トリガーを WebView SUCCEEDED空白のキャプチャにもかかわらず、が呼び出されると、JavaScriptとDOMの両方が正しく読み込まれているようです。DOM / JavaScriptリスナーは役に立たないようです。 AnimationまたはTransitionを使用して、メインFXスレッドをブロックせずに効果的に「スリープ」します。 ⚠️このアプローチは機能し、遅延が十分に長い場合、ユニットテストの最大100%を生み出すことができますが、遷移時間は、私たちが推測していて設計が悪い将来の瞬間のようです。パフォーマンスの高いアプリケーションやミッションクリティカルなアプリケーションの場合、これはプログラマーにスピードと信頼性のどちらかをトレードオフすることを強制します。 いつ電話するのがいいWebView.snapshot(...)ですか? 使用法: SnapshotRaceCondition.initialize(); BufferedImage bufferedImage = SnapshotRaceCondition.capture("<html style='background-color: red;'><h1>TEST</h1></html>"); /** * Notes: * - The color is to observe the otherwise non-obvious cropping that occurs * with some techniques, such as `setPrefWidth`, `autosize`, etc. * …