脚本之前的javafx WebView setMember()
我试图在我的页面上设置一些javascript项目,但这些项目是在页面上运行javascript之后设置的。例如,我创建了一个脚本之前的javafx WebView setMember(),java,javascript,javafx,Java,Javascript,Javafx,我试图在我的页面上设置一些javascript项目,但这些项目是在页面上运行javascript之后设置的。例如,我创建了一个Console.log()方法来显示java控制台中的内容,以便进行调试。但是这些项目是在页面代码运行之后设置的,因此日志记录不起作用(参见第二段代码)。我有没有办法在页面上的javascript运行之前启动代码 下面是我在Java应用程序中启动该项的方式: webEngine.getLoadWorker().stateProperty().addListener(新的C
Console.log()
方法来显示java控制台中的内容,以便进行调试。但是这些项目是在页面代码运行之后设置的,因此日志记录不起作用(参见第二段代码)。我有没有办法在页面上的javascript运行之前启动代码
下面是我在Java应用程序中启动该项的方式:
webEngine.getLoadWorker().stateProperty().addListener(新的ChangeListener()){
if(newState.equals(Worker.State.successed)){
JSObject win=(JSObject)Browser.webEngine.executeScript(“窗口”);
setMember(“$js”,新的JavaScriptBinder());
setMember(“console”,新的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>
//这行不行:
console.log(“你好”);
元素。addEventListener(“单击”,函数(){
//这条线确实有效:
log(“点击一声你好”);
});
<>代码> 在运行JavaScript代码之前,不要让页面完成加载。请考虑将代码链接到<代码>窗口。OnLoad 方法,例如
<script>
function startup() {
alert("The page has finished loading! I'm ready to do stuff!");
}
window.onload=startup;
</script>
函数启动(){
警告(“页面已完成加载!我已准备就绪!”);
}
window.onload=启动;
当然,如果您的代码的任何其他部分也尝试将自己附加到窗口,这可能会导致问题。onload
。FWIW,我也从该页面获取了上面的代码示例。问题与java有关,而不是与Javascript有关。这个答案是正确的。Ryan,您遇到这个问题是因为所有java代码都在执行在JavaScript被评估之后(这是stateProperty侦听器保证的)。因此第一个console.log不起作用,因为当它被评估时,控制台还没有被设置。第二个起作用,因为它在单击事件发生之前不会被评估(这可能是在Java代码能够执行很久之后)。