WebView何时准备好使用snapshot()?
JavaFX的文档状态,一个WebView当准备Worker.State.SUCCEEDED达到但是,除非你稍等片刻(即Animation,Transition,PauseTransition等等),一个空白页面的呈现方式。 这表明在WebView内部发生了一个事件,准备将其捕获,但这是什么? GitHub上SwingFXUtils.fromFXImage有7,000多个使用的代码片段,但其中大多数似乎与无关WebView,是交互式的(人为掩盖种族条件)或使用任意的Transitions(从100ms到2,000ms的任何地方)。 我试过了: 在的尺寸changed(...)范围内进行监听WebView(height和width属性DoubleProperty实现ObservableValue,可以监视这些东西) 🚫不可行。有时,该值似乎与绘制例程分开更改,从而导致部分内容。 盲目地告诉runLater(...)FX应用程序线程上的所有内容。 techniques许多技术都使用此方法,但是我自己的单元测试(以及其他开发人员的一些反馈)解释说,事件通常已经在正确的线程上,并且此调用是多余的。我能想到的最好的办法就是通过排队,对某些人起作用而增加了足够的延迟。 将DOM侦听器/触发器或JavaScript侦听器/触发器添加到 WebView despite SUCCEEDED尽管捕获了空白,但在调用JavaScript和DOM时似乎都正确加载了。DOM / JavaScript侦听器似乎无济于事。 使用Animation或Transition来有效地“休眠”而不会阻塞主FX线程。 This️这种方法行之有效,如果延迟足够长,则可以产生高达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. …