【发布时间】:2014-08-20 12:32:32
【问题描述】:
我在我的应用程序中使用 JavaFX webview。使用以下代码,我在页面加载后设置了一个成员
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("mymember", new JavaScriptBridge(this));
}
}
});
现在在 javascript 中我可以调用 mymember.doSomething() 例如当我按下按钮并成功执行时调用,但是如果我将以下代码添加到 html
<script>
function startup() {
mymember.doSomething();
}
window.onload=startup;
</script>
页面加载时不会自动执行。似乎window.onload 是在LoadWorker 得到通知之前执行的。所以mymember 还没有设置。但是另一方面,我不能在加载 html 之前设置mymember,对吧?
知道什么时候我需要设置mymember 以便在执行window.onload 时准备好它?
谢谢!
【问题讨论】: