我有一个JavaFX WebView,它使用后台消息进行更新,并执行脚本来更新页面。
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == State.SUCCEEDED) {
try {
webEngine.executeScript("foo1();");
} catch (Exception e) {
// JSException: TypeError: 'undefined' is not a function
}
}
}
});这通常是正确运行的,但是,当我使用自己的创建一个 WebView并在第二个页面上尝试并执行foo2()时,大约与第一个页面上的执行foo1同时执行时,我得到如下结果:
JSException: TypeError:“未定义”不是一个函数
我可以有一个同步块,但似乎没有必要,因为webEngines应该是独立的,还有其他解决方案吗?
发布于 2015-05-27 16:30:47
这是程序中的会话管理错误。
2 WebViews在同一时段竞争,而且.假设您没有实现协议和会话处理程序,包括cookie存储等等.第二个无法获得连接的far引擎将在不存在的东西(就webengine而言)上运行脚本,因此是一个未定义的对象。因此,错误。
我在HTTPS协议上使用这些东西,并且经历过这种情况。
https://stackoverflow.com/questions/27849105
复制相似问题