当前位置: 首页 > 知识库问答 >
问题:

加载前从JavaFX调用JavaScript函数

杨腾
2023-03-14
<!DOCTYPE html>
<html>
<head>
    <script type='text/javascript'>
        var a;
        function setA(aa) {
            a = aa;
        }
        function f() {
            <!-- ... some operation with var a-->
        }
    </script>
</head>
<body onload='f();'>
    <!-- ... -->
</body>
</html>
 @Override
    public void start(Stage primaryStage) throws InterruptedException {
        WebView webview = new WebView();
        WebEngine webengine=webview.getEngine();

        // Set var a before webengine.load
        webengine.load(getClass().getResource("hello.html").toString());

        Pane p = new Pane();
        p.getChildren().add(webview);
        Scene scene = new Scene(p);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
webengine.load(getClass().getResource("hello.html").toString());
webengine.executeScript("setA(123)");
webengine.executeScript("f()");

有什么潜在的解决方案吗?

共有1个答案

薛承基
2023-03-14

所以你想在“浏览器”开始处理html内容之前执行一些js的东西...

简短的回答...你不能真的那么做。

长长的回答...您实际上可以这样做,但您需要使用本地修改的jdk版本,在该版本中修改隐藏的组件,如WebEngine使用的compoment WebPage...或者使用反射来绕过运行时访问策略...但即便如此,它也会带来一罐蠕虫,你不能保证它会以你期望的方式工作。

 类似资料:
  • 问题内容: 我有一个html页面,我在其中通过如下所示的javascript动态附加html 我想调用一个js函数,例如,loadedContent(); 一旦以上脚本添加了动态html。 有人可以帮我怎么做吗? 问题答案: 您可以在不使用head.js javascript的情况下实现这一目标。

  • 我的IDE是Intellij。我尝试了这个文档来学习预加载器,但由于某些原因,预加载器从来没有从我的主类中调用过,甚至它的方法也没有被调用过。

  • 问题内容: 我使用PhoneGap开发了一个应用程序。我得到了一项在后台进行本地编码的服务(该服务和手机缺口应用程序在同一项目中)。不幸的是,我想从此服务中调用javascript函数。因此,我在网上搜索并创建了一些有趣的东西:创建一个扩展Plugin的类并在其中进行一些处理。然后我发现了这个: 我用此代码进行了测试,但是发生了一些错误: 这是我测试的方式: 在类c中,execute方法如下: 当

  • 问题内容: 我正在用ASP.NET编写网页。我有一些JavaScript代码,并且有一个带有click事件的Submit按钮。 是否可以使用JavaScript的click事件调用我在ASP中创建的方法? 问题答案: 好吧,如果您不想使用Ajax或任何其他方式来执行此操作,而只希望进行正常的ASP.NET回发,则可以按照以下方法进行操作(不使用任何其他库): 虽然有点棘手… :) 一世。在您的代码

  • 问题内容: 有人可以提供从CodeBehind调用JavaScript函数的好示例,反之亦然吗? 问题答案: 您可以尝试这样:

  • 问题内容: 有没有办法可以通过JS函数运行php函数? 像这样的东西: 我基本上想运行php函数,当我单击名为“ Test”的href时,它将调用php函数。 问题答案: 本质上,这就是AJAX的作用。页面加载,然后将事件添加到元素。当用户导致事件被触发时(例如,单击某些内容),您的Javascript使用XMLHttpRequest对象将请求发送到服务器。 服务器响应后(大概带有输出),另一个J