代码之家  ›  专栏  ›  技术社区  ›  Ullas Hunka

JavaFX11不支持ECMAScript6和css3

  •  0
  • Ullas Hunka  · 技术社区  · 7 年前

    我正在用javafx11的一些绘图工具创建一个web浏览exp,但是在尝试加载javascript代码时 let 和 const 使用这些变量只是被忽略并抛出异常。我使用的是maven 3.8.0、java1.8和javafx11。

    代码如下:

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>12-ea+9</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>12-ea+9</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>12-ea+9</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>12-ea+9</version>
    </dependency>
    

    和Java代码

    public static void main(String[] urls) {
            String javaVersion = System.getProperty("java.version");
            String javafxVersion = System.getProperty("javafx.version");
            System.out.println(javaVersion + " java....... fx........ " + javafxVersion);
            Application.launch(urls);
        }
    
        @Override
        public void start(Stage stage) throws Exception {
            Parameters parameters = getParameters();
            List<String> raw = parameters.getRaw();
            String url = "http://example.com/";
            if (raw.size() != 0) {
                url = raw.get(0);
            }
            /*
             * WebConsoleListener.setDefaultListener((webView, message, lineNumber,
             * sourceId) -> { System.out.println(message + "[at " + lineNumber + "] [in " +
             * sourceId + "]"); });
             */
            Pane root = new Pane();
    
            WebView webView = new WebView();
            WebEngine webEngine = webView.getEngine();
    
            // Load the Google web page
            webEngine.load(url);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.setTitle("IWB");
            stage.show();
    
            // mainStage = stage;
            root.getChildren().add(webView);
            webView.setMinSize((screenSize.getWidth() - 120), (screenSize.getHeight() - 60));
            btns.setMinHeight(screenSize.getHeight() - 60);
    
            stage.setOnCloseRequest(e -> {
                // Platform.exit();
                // System.exit(0);
            });
            // Platform.setImplicitExit(false);
        }
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   tresf    6 年前

    我使用的是maven 3.8.0、java1.8和javafx11。

    简而言之,使用最新的java8.Java似乎正在更新该版本的WebKit,因此更新的版本将产生更新的特性。请阅读下面的细目,特别是 8u5 和 8u251

    • JavaFX11.0.2:WebKit版本 606.1 12.x )
    • JavaFX 15 ea+3:WebKit版本 609.1 13.x )
      • 注:

    甲骨文Java 8

    • oraclejava1.8附带了自己的捆绑javafx版本,通常不能被覆盖。要使用javafx11,需要使用java11运行项目并设置System属性 java.library.path 到FX框架的位置。
    • 使用获得的版本 web.getEngine().getUserAgent() 技术per https://stackoverflow.com/a/23228558/3196753
    • 假设WebKit~=Safari。萨法里酒店 ECMAScript 6 support since Safari 10
    • 警告: 使用Oracle的Java会带来严重的商业许可问题。更多信息请参见: Java Is Still Free 2.0.3 . 如果此许可证导致应用程序出现问题,建议使用OpenJDK 11。文章中有几个提供商没有这些商业许可限制。