gpt4 book ai didi

脚本之前的 javafx WebView setMember()

转载 作者:行者123 更新时间:2023-11-30 17:28:34 25 4
gpt4 key购买 nike

我正在尝试在我的页面上设置一些 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>

最佳答案

在运行 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,我还从该页面获取了上面的代码示例。

关于脚本之前的 javafx WebView setMember(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com