Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
脚本之前的javafx WebView setMember()_Java_Javascript_Javafx - Fatal编程技术网

脚本之前的javafx WebView setMember()

脚本之前的javafx WebView setMember(),java,javascript,javafx,Java,Javascript,Javafx,我试图在我的页面上设置一些javascript项目,但这些项目是在页面上运行javascript之后设置的。例如,我创建了一个Console.log()方法来显示java控制台中的内容,以便进行调试。但是这些项目是在页面代码运行之后设置的,因此日志记录不起作用(参见第二段代码)。我有没有办法在页面上的javascript运行之前启动代码 下面是我在Java应用程序中启动该项的方式: webEngine.getLoadWorker().stateProperty().addListener(新的C

我试图在我的页面上设置一些javascript项目,但这些项目是在页面上运行javascript之后设置的。例如,我创建了一个
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代码能够执行很久之后)。