我正在尝试在我的页面上设置一些javascript项目,但是javascript在页面上运行后项目已经设置好了。例如,我创建了一个Console.log()
方法来在我的java控制台中显示内容以进行调试。但是在页面代码运行之后项目就会被设置,因此日志记录不起作用(参见第二块代码)。有没有办法让我在页面上的javascript运行之前启动代码?
所以,这就是我在Java应用程序中启动项目的方法:
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>(){
if(newState.equals(Worker.State.SUCCEEDED)){
JSObject win = (JSObject)Browser.webEngine.executeScript("window");
win.setMember("$js", new JavaScriptBinder());
win.setMember("console", new JSConsole());
}
}
这是一个javascript示例:
<script>
// This line doesn't work:
console.log("Hello");
element.addEventListener("click", function(){
// This line does work:
console.log("Hello from a click");
});
</script>
答案 0 :(得分:1)
在运行javascript代码之前,您不会让页面完成加载。考虑将您的代码链接到window.onload
方法,例如
<script>
function startup() {
alert("The page has finished loading! I'm ready to do stuff!");
}
window.onload=startup;
</script>
当然,如果您的代码的任何其他部分也尝试将自己附加到window.onload
,这可能会导致问题。 I recommend reading this article if this is the case for you. FWIW,我还从该页面上获取了上面的代码示例。