我试图从JavaFX WebView中调用JavaScript函数来处理JavaFX按钮单击事件。
我正在使用以下代码,但它不起作用:
try {
File file = new File("F:\\inputfile\\hello.htm");
WebEngine webengine = webview.getEngine();
webengine.load(file.toURI().toURL().toString());
} catch(Exception ex) {
ex.printStackTrace();
}
webengine.executeScript("test()");
<script language="javascript">
function test()
{
window.scrollBy(0, 20);
}
</script>
我使用了您的代码,如下所示,它起作用了
package org.im.oor;
import java.io.File;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
/**
*
* @author maher
*/
public class main extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("fire JS");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (webengine != null)
{
webengine.executeScript("test()");
}
}
});
publishServices();
StackPane root = new StackPane();
// root.getChildren().add(btn);
HBox hh = new HBox();
hh.getChildren().add(btn);
hh.getChildren().add(webview);
root.getChildren().add(hh);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
private WebEngine webengine;
private static WebView webview;
private void publishServices() {
try {
webview = new WebView();
webview.setVisible(true);
webengine = webview.getEngine();
webengine.setJavaScriptEnabled(true);
File file = new File("c:\\hello.html");
System.out.println(file.exists() + " file exitence");
webengine.load(file.toURI().toURL().toString());
} catch (Exception ex) {
System.err.print("error " + ex.getMessage());
ex.printStackTrace();
}
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
C:\hello.html的内容
<html>
<header>
<script language="javascript">
function test()
{
//window.scrollBy(0,20);
document.body.style.backgroundColor="#00f3f3";
alert('test');
}
</script>
</header>
<body>test
<a href='#' onclick="test();">fire for test</a>
</body>
</html>
检查这段代码,让我知道…关于这一点:
使您的程序简单地测试它是否工作JS<==>JavaFX,然后您可以进一步使用更高级的JS函数
问题内容: 我正在尝试编写Django应用程序,而我却被困在单击按钮时如何调用视图函数。 在我的模板中,我有一个如下所示的链接按钮,单击该按钮会将您带到另一个网页: 单击按钮时,我还想调用Django视图函数(以及重定向到目标网站)。查看功能使数据库中的值增加,该值存储了单击按钮的次数。 该是到外部网站(如链接 www.google.com )。现在,单击该按钮时,它将打开一个新窗口,该窗口将您带
我正在使用ASP.NET和JavaScript创建一个计算器。当用户单击按钮时,现在正试图使它对按钮7起作用,它会调用一个javascript函数,以查看用户是否单击了clear按钮、back space按钮,或者他们是否单击了number按钮。如果它是一个数字按钮,则该函数将把数字添加到文本框中。例如,如果用户点击7然后点击8,然后点击*,然后点击1,文本框将显示:78*1。我无法使javasc
问题内容: 我创建了一个名为functioncalling.php的页面,其中包含两个按钮 Submit 和 Insert 。作为PHP的初学者,我想测试单击按钮时执行的功能。我希望输出出现在同一页面上。因此,我创建了两个功能,每个按钮一个。functioncalling.php的源代码如下: 这里的问题是单击任何按钮后都没有输出。 我到底哪里出问题了? 问题答案: 是的,您在这里需要Ajax。请
我已经做了我的代码。但是当用户输入时,它正在调用服务器端的2 button事件。我只想调用一个事件。 我有三个ASP.NET按钮, 注 我已经为btnSaveFile定义了click函数,下面是代码 下面的代码用于调用上面的函数。 键控功能工作正常。但同时,当我按下enter键时,它也在调用服务器端代码。它不应调用。它应该在服务器端调用 怀疑 我总共有3个服务器端按钮,但它只调用了2个为什么?(只
问题内容: 在有人对我进行抨击或将其标记下来之前,我已经遍及整个互联网,以查找如何执行此操作(包括关于stackoverflow的相同问题)。我是新手,而且我发现很难学习新概念,所以请对我轻松一点。 我想做的是单击按钮时调用php脚本/函数。如果有帮助,我可以在WAMP中运行它。这是我的代码: the_script.php中包含以下内容: 为什么这不起作用?我听说按钮是客户端等,而PHP是服务器端
编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,