我正在JavaFX中开发一个依赖于WebView(以及WebEngine)的数据挖掘应用程序。 挖掘分两步进行:首先,用户使用UI导航到WebView中的网站,以配置可以搜索有趣数据的位置。 其次,使用定期运行的后台任务,WebEngine加载相同的文档并尝试从加载的文档中提取数据。 这适用于大多数情况,但最近我遇到了一些使用AJAX呈现内容的页面的麻烦。 要检查WebEngine是否已加载文档,我会听取loadWorker的stateProperty 。 如果状态转换为succesfull,我知道文档已加载(与可能在document.ready()上运行的任何javascript或等效文件一起)。 这是因为如果我没弄错的话,javascript会在JavaFX线程上执行(来源: https : //blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx )。 但是,如果启动了AJAX调用,则javascript执行完成,引擎让我知道文档已准备就绪,但显然不是因为优秀的AJAX调用内容可能仍然会更改。 有没有办法解决这个问题,注入一个钩子,以便在AJAX调用完成后通知我? 我已经尝试在$.ajaxSetup()安装一个默认的完整处理程序,但这很狡猾,因为如果ajax调用覆盖整个处理程序,则不会调用默认值。 另外,我只能在文档首次加载后注入(然后一些AJAX调用可能已经在运行)。 我已经使用upcall测试了这个注入,它适用于在命令上启动的AJAX调用(在注入默认处理程序之后),它们不提供自己的完整处理程序。 我正在寻找两件事:首先:挂钩到AJAX调用的完成处理程序的通用方法,其次:等待WebEngine完成所有AJAX调用并在事后通知我的方法。
我一直在尝试进行以下工作,但我没有成功将其他类似的解决方案集成到我的问题上。 我想要添加到webview的HTML文件如下: $(document).ready(function() { var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); $(‘#calendar’).fullCalendar({ editable: true, events: [ { title: ‘All Day Event’, start: new Date(y, m, 1) }, { title: ‘Long Event’, start: new Date(y, m, d-5), end: new Date(y, m, d-2) }, { id: 999, […]