Webview 如何在JavaFX应用程序中处理HTML表单
有人能帮助我如何在JavaFX中捕获HTML按钮的onclick事件吗? 单击该按钮时,javascript警报应显示,我可以在小程序窗口上显示HTML页面,但onClick事件不起作用 HTML:Webview 如何在JavaFX应用程序中处理HTML表单,webview,javafx-2,javafx-8,javafx-webengine,Webview,Javafx 2,Javafx 8,Javafx Webengine,有人能帮助我如何在JavaFX中捕获HTML按钮的onclick事件吗? 单击该按钮时,javascript警报应显示,我可以在小程序窗口上显示HTML页面,但onClick事件不起作用 HTML: <html lang="en"> <head> <title>WebView</title> <link rel="stylesheet" type="text/css" href="help.css"> <s
<html lang="en">
<head>
<title>WebView</title>
<link rel="stylesheet" type="text/css" href="help.css">
<script>
function buttonClick() {
alert("Button Clicked");
}
</script>
</head>
<body>
<button onclick="buttonClick()">Submit</button>
</body>
</html>
类浏览器扩展区域{
专用HBox工具栏;
私有静态字符串[]图像文件=新字符串[]{
“help.png”
};
私有静态字符串[]标题=新字符串[]{
“帮助”
};
私有静态字符串[]URL=新字符串[]{
WebViewSample.class.getResource(“help.html”).toExternalForm()
};
最终超链接[]hpls=新超链接[captions.length];
最终图像[]图像=新图像[imageFiles.length];
最终WebView浏览器=新WebView();
final-WebEngine-WebEngine=browser.getEngine();
最终组合框ComboBox=新组合框();
公共浏览器(){
//应用样式
getStyleClass().add(“浏览器”);
对于(int i=0;i
您没有看到任何内容的原因是您没有为webEngine
定义onAlert
处理程序。试试最简单的方法:
// in the constructor of `Browser`
webEngine.setOnAlert((WebEvent<String> event) -> {
System.out.println("ALERT!!!! " + event.getData());
});
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("bridge", new Bridge());
function buttonClick() {
bridge.doSomething();
}
JSObject.removeMember()
您没有看到任何内容的原因是您没有为
webEngine
定义onAlert
处理程序。试试最简单的方法:
// in the constructor of `Browser`
webEngine.setOnAlert((WebEvent<String> event) -> {
System.out.println("ALERT!!!! " + event.getData());
});
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("bridge", new Bridge());
function buttonClick() {
bridge.doSomething();
}
JSObject.removeMember()
您没有看到任何内容的原因是您没有为
webEngine
定义onAlert
处理程序。试试最简单的方法:
// in the constructor of `Browser`
webEngine.setOnAlert((WebEvent<String> event) -> {
System.out.println("ALERT!!!! " + event.getData());
});
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("bridge", new Bridge());
function buttonClick() {
bridge.doSomething();
}
JSObject.removeMember()
您没有看到任何内容的原因是您没有为
webEngine
定义onAlert
处理程序。试试最简单的方法:
// in the constructor of `Browser`
webEngine.setOnAlert((WebEvent<String> event) -> {
System.out.println("ALERT!!!! " + event.getData());
});
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("bridge", new Bridge());
function buttonClick() {
bridge.doSomething();
}
JSObject.removeMember()
嗨,Nikos,我还有一个疑问,如果我有2个按钮和2个不同的JavaScript函数,我如何区分它们?单击Click函数按钮Click1(){alert(“单击的第一个按钮”);//bridge.doSomething();}函数按钮Click2(){alert(“单击的第二个按钮”);//bridge.doSomething();}相同的原理;e、 g.制作另一个对象,
Bridge2
,-或在Bridge
等中制作一个新方法doSomethingElse()
。谢谢Nikos。1.如果我有一个像2这样的文本框,你能告诉我如何检索表单字段吗。如何使用内容从一个页面导航到另一个页面?这可以解决我所有的疑问。对于(1)你需要标准的Javascript操作-如果不确定最好问另一个问题。(2) 这也是另一个问题,你应该提供更多关于你到底想要什么的细节。标准HTML链接在很多情况下都能工作……嗨,Nikos,我还有一个疑问,如果我有2个按钮和2个不同的JavaScript函数,我如何区分它们?单击Click函数按钮Click1(){alert(“单击的第一个按钮”);//bridge.doSomething();}函数按钮Click2(){alert(“单击的第二个按钮”);//bridge.doSomething();}相同的原理;e、 g.制作另一个对象,Bridge2
,-或在BridgedoSomethingElse()