类javafx.scene.web.WebEngine源码实例Demo

下面列出了怎么用javafx.scene.web.WebEngine的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: logbook-kai   文件: TextEditorPane.java
private void setting() {
    WebEngine engine = this.webview.getEngine();
    JSObject window = (JSObject) engine.executeScript("window");
    Object ace = null;
    try {
        ace = engine.executeScript("ace");
    } catch (Exception e) {
    }
    if (ace != null && ace != engine.executeScript("undefined")) {
        if (this.lang != null) {
            window.call("start", this.lang);
            this.lang = null;
        }
        if (this.source != null) {
            window.call("set", this.source);
            this.source = null;
        }
        if (this.readOnly != null) {
            window.call("setReadOnly", this.readOnly);
            this.readOnly = null;
        }
    }
}
 
源代码2 项目: logbook-kai   文件: TextEditorPane.java
@FXML
void initialize() {
    WebEngine engine = this.webview.getEngine();
    engine.load(PluginServices.getResource("logbook/gui/text_editor_pane.html").toString());
    engine.getLoadWorker().stateProperty().addListener(
            (ob, o, n) -> {
                if (n == Worker.State.SUCCEEDED) {
                    this.setting();
                }
            });

    KeyCombination copy = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN);
    KeyCombination cut = new KeyCodeCombination(KeyCode.X, KeyCombination.CONTROL_DOWN);

    this.webview.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
        if (copy.match(event) || cut.match(event)) {
            String text = String.valueOf(engine.executeScript("getCopyText()"));

            Platform.runLater(() -> {
                ClipboardContent content = new ClipboardContent();
                content.putString(text);
                Clipboard.getSystemClipboard().setContent(content);
            });
        }
    });
}
 
源代码3 项目: updatefx   文件: UpdateDialogController.java
private void initialize() {
	URL changelog = release.getApplication().getChangelog();
	
	if (changelog != null) {
		WebEngine engine = changeView.getEngine();
		String finalURL = String.format("%s?from=%d&to=%d", changelog, currentReleaseID, release.getId());
		engine.load(finalURL);
	} else {
		changeView.setVisible(false);
		changeView.setManaged(false);
	}
	
   Object[] messageArguments = { release.getApplication().getName(), currentVersion, release.getVersion() };
   MessageFormat formatter = new MessageFormat("");
   formatter.setLocale(resources.getLocale());
   
	if (release.getLicenseVersion() != currentLicenseVersion) {
		formatter.applyPattern(resources.getString("infotext.paidupgrade"));
	} else {
		formatter.applyPattern(resources.getString("infotext.freeupgrade"));			
	}
	
	infoLabel.setText(formatter.format(messageArguments));
	infoLabel.autosize();
}
 
源代码4 项目: ReactFX   文件: DeferredHtmlRendering.java
@Override
public void start(Stage primaryStage) {
    TextArea textArea = new TextArea();
    WebView webView = new WebView();
    WebEngine engine = webView.getEngine();

    EventStreams.valuesOf(textArea.textProperty())
            .successionEnds(Duration.ofMillis(500))
            .subscribe(html -> engine.loadContent(html));

    SplitPane root = new SplitPane();
    root.getItems().addAll(textArea, webView);
    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.show();
}
 
源代码5 项目: MyBox   文件: NetworkTools.java
public static Map<String, String> readCookie(WebEngine webEngine) {
    try {
        String s = (String) webEngine.executeScript("document.cookie;");
        String[] vs = s.split(";");
        Map<String, String> m = new HashMap<>();
        for (String v : vs) {
            String[] vv = v.split("=");
            if (vv.length < 2) {
                continue;
            }
            m.put(vv[0].trim(), vv[1].trim());
        }
        return m;
    } catch (Exception e) {
        logger.debug(e.toString());
        return null;
    }
}
 
源代码6 项目: Learn-Java-12-Programming   文件: HtmlWebView.java
public void start(Stage primaryStage) {
    try {
        WebView wv = new WebView();
        WebEngine we = wv.getEngine();
        String html = "<html><center><h2>Hello, world!</h2></center></html>";
        we.loadContent(html, "text/html");

        Scene scene = new Scene(wv, 200, 60);

        primaryStage.setTitle("My HTML page");
        primaryStage.setScene(scene);
        primaryStage.onCloseRequestProperty()
                .setValue(e -> System.out.println("Bye! See you later!"));
        primaryStage.show();
    } catch (Exception ex){
        ex.printStackTrace();
    }
}
 
源代码7 项目: Learn-Java-12-Programming   文件: HtmlWebView.java
public void start9(Stage primaryStage) {
    try {
        Text txt = new Text("Fill the form and click Submit");

        WebView wv = new WebView();
        WebEngine we = wv.getEngine();
        File f = new File("src/main/resources/form.html");
        we.load(f.toURI().toString());

        VBox vb = new VBox(txt, wv);
        vb.setSpacing(10);
        vb.setAlignment(Pos.CENTER);
        vb.setPadding(new Insets(10, 10, 10, 10));

        Scene scene = new Scene(vb, 300, 200);

        primaryStage.setScene(scene);
        primaryStage.setTitle("JavaFX with embedded HTML");
        primaryStage.onCloseRequestProperty()
                .setValue(e -> System.out.println("Bye! See you later!"));
        primaryStage.show();
    } catch (Exception ex){
        ex.printStackTrace();
    }
}
 
源代码8 项目: marathonv5   文件: Blurb.java
private void initComponents() {
    webView.setId("webView");
    webView.getEngine().getLoadWorker().stateProperty().addListener(new HyperlinkRedirectListener(webView));
    VBox.setVgrow(webView, Priority.ALWAYS);
    WebEngine engine = webView.getEngine();
    if (blurbInfo.getURL() != null)
        engine.load(blurbInfo.getURL().toExternalForm());
    else
        engine.loadContent(blurbInfo.getHtml());

    buttonBar.setId("buttonBar");
    buttonBar.setButtonMinWidth(Region.USE_PREF_SIZE);
    buttonBar.getButtons().add(okButton);
    if (blurbInfo.isCancelNeeded()) {
        buttonBar.getButtons().add(cancelButton);
    }
    okButton.setOnAction((e) -> onOk());
    cancelButton.setOnAction((e) -> onCancel());
}
 
源代码9 项目: marathonv5   文件: JavaFXWebViewElement.java
public static void init(Node source) {
    WebView webview = (WebView) source;
    if (webview.getProperties().get("marathon_player_installed") == null) {
        webview.getProperties().put("marathon_player_installed", Boolean.TRUE);
        WebEngine webEngine = webview.getEngine();
        if (webEngine.getLoadWorker().stateProperty().get() == State.SUCCEEDED) {
            loadScript(webview, webEngine);
        }
        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
            @Override
            public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
                if (newState == State.SUCCEEDED) {
                    loadScript(webview, webEngine);
                }
            }
        });
    }
}
 
源代码10 项目: marathonv5   文件: RFXWebView.java
private void init(Node source) {
    WebView webview = (WebView) source;
    if (webview.getProperties().get("marathon_listener_installed") == null) {
        webview.getProperties().put("marathon_listener_installed", Boolean.TRUE);
        WebEngine webEngine = webview.getEngine();
        if (webEngine.getLoadWorker().stateProperty().get() == State.SUCCEEDED) {
            loadScript(webview);
        }
        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
            @Override
            public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
                if (newState == State.SUCCEEDED) {
                    loadScript(webview);
                }
            }
        });
    }
    JavaFXWebViewElement.init(source);
}
 
源代码11 项目: xJavaFxTool-spring   文件: IndexService.java
/**
 * @Title: addWebView
 * @Description: 添加WebView视图
 */
public void addWebView(String title, String url, String iconPath) {
    WebView browser = new WebView();
    WebEngine webEngine = browser.getEngine();
    if (url.startsWith("http")) {
        webEngine.load(url);
    } else {
        webEngine.load(IndexController.class.getResource(url).toExternalForm());
    }
    if (indexController.getSingleWindowBootCheckBox().isSelected()) {
        JavaFxViewUtil.getNewStage(title, iconPath, new BorderPane(browser));
        return;
    }
    Tab tab = new Tab(title);
    if (StringUtils.isNotEmpty(iconPath)) {
        ImageView imageView = new ImageView(new Image(iconPath));
        imageView.setFitHeight(18);
        imageView.setFitWidth(18);
        tab.setGraphic(imageView);
    }
    tab.setContent(browser);
    indexController.getTabPaneMain().getTabs().add(tab);
    indexController.getTabPaneMain().getSelectionModel().select(tab);
}
 
源代码12 项目: jfree-fxdemos   文件: OrsonChartsFXDemo.java
private SplitPane createChartPane() {
    CategoryDataset3D dataset = SampleData.createCompanyRevenueDataset();
    Chart3D chart = AreaChart3DFXDemo1.createChart(dataset);
    Chart3DViewer viewer = new Chart3DViewer(chart);
  
    this.splitter = new SplitPane();
    splitter.setOrientation(Orientation.VERTICAL);
    final BorderPane borderPane = new BorderPane();
    borderPane.setCenter(viewer);
    
   // Bind canvas size to stack pane size.
    viewer.prefWidthProperty().bind(borderPane.widthProperty());
    viewer.prefHeightProperty().bind(borderPane.heightProperty());

    final StackPane sp2 = new StackPane();
    
    this.chartDescription = new WebView();
    WebEngine webEngine = chartDescription.getEngine();
    webEngine.load(AreaChart3DFXDemo1.class.getResource("AreaChart3DFXDemo1.html").toString());
    
    sp2.getChildren().add(chartDescription);  
    splitter.getItems().addAll(borderPane, sp2);
    splitter.setDividerPositions(0.70f, 0.30f);
    return splitter;
}
 
源代码13 项目: zest-writer   文件: MdTextController.java
@FXML
private void handleValidateButtonAction(ActionEvent event) {
    String s = StringEscapeUtils.unescapeHtml4(markdownToHtml(currentSourceText.getText()));
    if (MdConvertController.corrector == null) {
        MdConvertController.corrector = new Corrector();
    }
    try {
        String result = MdConvertController.corrector.checkHtmlContent(s);
        WebEngine webEngine = currentRenderView.getEngine();
        webEngine.loadContent("<!doctype html><html lang='fr'><head><meta charset='utf-8'><base href='"
                + MainApp.class.getResource("assets").toExternalForm() + "' /></head><body>" + result + "</body></html>");
        webEngine.setUserStyleSheetLocation(MainApp.class.getResource("assets/static/css/content.css").toExternalForm());
    } catch (DOMException e) {
        log.error(e.getMessage(), e);
    }
}
 
源代码14 项目: mars-sim   文件: Browser.java
public void loadPage(TextField textField, //ProgressBar progressBar,
		WebEngine webEngine, WebView webView) {

	String route = textField.getText();
	if (route !=null)
		if (!route.substring(0, 7).equals("http://")) {
			route = "http://" + route;
			textField.setText(route);
		}

	System.out.println("Loading route: " + route);
	//progressBar.progressProperty().bind(webEngine.getLoadWorker().progressProperty());

	webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
		@Override
		public void changed(ObservableValue<? extends State> value,
				State oldState, State newState) {
			if(newState == State.SUCCEEDED){
				System.out.println("Location loaded + " + webEngine.getLocation());
			}
		}
	});
	webEngine.load(route);


}
 
源代码15 项目: mars-sim   文件: JavaFXBrowserWithHistory.java
private static Object executejQuery(final WebEngine engine, String minVersion, String jQueryLocation, String script) {
    return engine.executeScript(
            "(function(window, document, version, callback) { "
            + "var j, d;"
            + "var loaded = false;"
            + "if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {"
            + " var script = document.createElement(\"script\");"
            + " script.type = \"text/javascript\";"
            + " script.src = \"" + jQueryLocation + "\";"
            + " script.onload = script.onreadystatechange = function() {"
            + " if (!loaded && (!(d = this.readyState) || d == \"loaded\" || d == \"complete\")) {"
            + " callback((j = window.jQuery).noConflict(1), loaded = true);"
            + " j(script).remove();"
            + " }"
            + " };"
            + " document.documentElement.childNodes[0].appendChild(script) "
            + "} "
            + "})(window, document, \"" + minVersion + "\", function($, jquery_loaded) {" + script + "});");
}
 
源代码16 项目: CPUSim   文件: HelpController.java
/**
 * search all pages for the given text and fill in the results in the searchList
 * @param text the String to search for
 */
public void performSearchFor(String text) {
    WebEngine webEngine = webView.getEngine();
    searchController.initializeSearch(webEngine.getDocument(),text);
    Map<String, Integer> occurrenceMap =
            searchController.getSortedNameOccurrenceMap();
    fillInSearchList(occurrenceMap);
}
 
源代码17 项目: constellation   文件: WebViewer.java
private void init(final String url) {
    Platform.setImplicitExit(false);
    Platform.runLater(() -> {
        Scene scene1 = new Scene(root);
        setScene(scene1);
        WebView webView = new WebView();
        webView.setMaxWidth(Double.MAX_VALUE);
        webView.setMaxHeight(Double.MAX_VALUE);
        //                System.out.println("WEB VIEWER: " + System.identityHashCode(webView.getClass()));
        root.setCenter(webView);
        webView.setContextMenuEnabled(false);
        final WebEngine webEngine = webView.getEngine();
        webEngine.load(url);
        webEngine.locationProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(final ObservableValue<? extends String> observable, final String oldValue, final String newValue) {
                webEngine.load(newValue);
            }
        });
        EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
            @Override
            public void handle(final ActionEvent event) {
                webEngine.load(url.startsWith("http://")
                        ? url
                        : "http://" + url);
            }
        };
    });
}
 
源代码18 项目: oim-fx   文件: ShowPanel.java
private void initWeb(WebEngine webEngine) {
	JSObject window = (JSObject) webEngine.executeScript("window");
	// JSObject window = (JSObject) webEngine.executeScript("document");
	if(isLoad&&null!=member){
		window.setMember("oim", member);
	}
}
 
源代码19 项目: oim-fx   文件: ChatShowPane.java
private void initWeb(WebEngine webEngine) {
	JSObject window = (JSObject) webEngine.executeScript("window");
	// JSObject window = (JSObject) webEngine.executeScript("document");
	if (isLoad && null != member) {
		window.setMember("oim", member);
	}
}
 
源代码20 项目: oim-fx   文件: WebViewStyleTest.java
@Override
public void start(final Stage primaryStage) {
	primaryStage.setTitle("What World");
	
	WebView webView = new WebView();
	WebPage webPage = null;
	WebEngine webEngine = webView.getEngine();

	webEngine.getLoadWorker().stateProperty().addListener((ObservableValue<? extends State> ov, State oldState, State newState) -> {
		System.out.println("loadWorker");
		if (newState == State.SUCCEEDED) {
			JSObject window = (JSObject) webEngine.executeScript("window");
			window.setMember("app", app);
			System.out.println("app");
		}
	});

	webPage = Accessor.getPageFor(webEngine);
	webPage.setJavaScriptEnabled(true);
	webPage.setEditable(false);
	webPage.setContextMenuEnabled(false);
	webView.setFocusTraversable(true);
	webView.getEngine().load(WebViewStyleTest.class.getResource("WebViewStyleTest.html").toExternalForm());

	BorderPane bp=new BorderPane();
	Scene scene = new Scene(bp);
	scene.getStylesheets().add(this.getClass().getResource("WebView.css").toString());
	bp.setCenter(webView);
	
	primaryStage.setScene(scene);
	primaryStage.show();
}
 
源代码21 项目: wandora   文件: AbstractWebViewTool.java
protected WebEngine getWebEngine(Context context) {
    WebViewPanel webViewPanel = getWebViewPanel(context);
    if(webViewPanel != null) {
        return webViewPanel.getWebEngine();
    }
    return null;
}
 
源代码22 项目: oim-fx   文件: WebViewStyle.java
private void initEvent() {

			final WebEngine webEngine = webView.getEngine();

			webEngine.locationProperty().addListener(new ChangeListener<String>() {
				@Override
				public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
					locationField.setText(newValue);
				}
			});
			webEngine.locationProperty().addListener(e -> {
				System.out.println(webEngine.getLocation());
			});

			EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
				@Override
				public void handle(ActionEvent event) {
					webEngine.load(locationField.getText().startsWith("http://") ? locationField.getText() : "http://" + locationField.getText());
				}
			};

			locationField.setOnAction(goAction);
			goButton.setOnAction(goAction);

			//webEngine.load("http://www.baidu.com");
			webView.getEngine().load(WebViewStyle.class.getResource("ScriptToJava.html").toExternalForm());

		}
 
源代码23 项目: oim-fx   文件: WebFrame.java
private void init() {
    
    VBox rootVBox = new VBox();
    
    this.setCenter(rootVBox);
   // this.setBackground("Resources/Images/Wallpaper/1.jpg");
    this.setTitle("登录");
    this.setWidth(380);
    this.setHeight(600);
    this.setRadius(10);
    
    StackPane u = new StackPane();
    u.setPrefSize(50, 100);
   // String hString = this.getClass().getResource("/resources/chat/index.html").toString();
    File file = new File("Resources/Images/Head/User/90_100.gif");
    
    String fullPath = file.getAbsolutePath();
    String htmlText = "<html><body> <lable>666</label>"
            + "<img src=\"file:/"+fullPath+"\" />"
            + "</body></html> ";
    System.out.println(htmlText);
    WebView webView = new WebView();
    webView.setContextMenuEnabled(false);
    WebEngine we = webView.getEngine();
    //we.load(hString);
    Image logoIamge = new Image(this.getClass().getResource("/resources/login/logo.png").toExternalForm(), true);
    ImageView logoImageView = new ImageView();
    logoImageView.setImage(logoIamge);
    we.loadContent(htmlText);
   // Document d = we.getDocument();
    // Element root = we.getDocument().getDocumentElement();
    // NodeList nl = root.getElementsByTagName("body");
    // Node node = nl.item(0);

    //node.appendChild(node);
    rootVBox.getChildren().add(u);
    rootVBox.getChildren().add(webView);
}
 
源代码24 项目: Path-of-Leveling   文件: POB_webviewController.java
public void open(String url){
    //final WebEngine webEngine = pob.getEngine();
    WebEngine engine = pob.getEngine();
    engine.load(url);
    /*
    Hyperlink hpl = new Hyperlink(url);
    
    hpl.setOnAction(new EventHandler<ActionEvent>() {
      @Override public void handle(ActionEvent e) {
          webEngine.load(url);
      }
  });*/
}
 
源代码25 项目: LogFX   文件: HighlightOptions.java
private Node createHelpIcon() {
    WebView htmlContent = new WebView();
    WebEngine webEngine = htmlContent.getEngine();

    String htmlText;
    try {
        htmlText = new BufferedReader( new InputStreamReader(
                getClass().getResourceAsStream( "/html/highlight-options-help.html" ),
                StandardCharsets.UTF_8 )
        ).lines().collect( joining( "\n" ) );

        webEngine.setUserStyleSheetLocation( getClass().getResource( "/css/web-view.css" ).toString() );
    } catch ( Exception e ) {
        log.warn( "Error loading HTML resources", e );
        htmlText = "<div>Could not open the help file</div>";
    }

    Label help = AwesomeIcons.createIconLabel( HELP );
    Dialog helpDialog = new Dialog( htmlContent );
    helpDialog.setTitle( "Highlight Options Help" );
    helpDialog.setStyle( StageStyle.UTILITY );
    helpDialog.setResizable( false );

    final String html = htmlText;

    help.setOnMouseClicked( event -> {
        helpDialog.setOwner( getScene().getWindow() );
        webEngine.loadContent( html );
        helpDialog.show();
    } );

    help.setOnMouseEntered( event -> getScene().setCursor( Cursor.HAND ) );
    help.setOnMouseExited( event -> getScene().setCursor( Cursor.DEFAULT ) );

    return help;
}
 
源代码26 项目: SubTitleSearcher   文件: ExtractDialog.java
/**
	 * 打开网址
	 * 
	 * @param url
	 */
	private void openUrl(String url) {
		com.sun.javafx.webkit.WebConsoleListener.setDefaultListener((webView, message, lineNumber, sourceId) -> {
			logger.info("from webview: " + message + " [" + sourceId + " - " + lineNumber + "]");
		});
		Platform.runLater(new Runnable() {
			@Override
			public void run() {
				
				
				webview = new WebView();
				// webview.setContextMenuEnabled(false);

				WebEngine webEngine = webview.getEngine();

				webEngine.setJavaScriptEnabled(true);
				webEngine.setOnAlert(event -> jsAlert(event.getData()));
				webEngine.setConfirmHandler(message -> jsConfirm(message));

				webEngine.setOnError(event -> {
					logger.info(event.getMessage());
				});
//				webEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
//					
//				});
				
				webviewScene = new Scene(webview);
				bsPanel.setScene(webviewScene);
				
				initData();
				webEngine.load(url);
				webview.getEngine().executeScript("window.serverPort="+AppConfig.serverPort+"");
				
			}
		});
	}
 
源代码27 项目: MyBox   文件: WebBrowserController.java
protected WebEngine initWebEngine() {
    if (tabControllers == null || tabControllers.isEmpty()) {
        return null;
    }
    for (Tab tab : tabControllers.keySet()) {
        WebBrowserBoxController c = tabControllers.get(tab);
        return c.webEngine;
    }
    return null;
}
 
源代码28 项目: MyBox   文件: LocationTools.java
public static void addMarkerInGaoDeMap(WebEngine webEngine,
        double longitude, double latitude, String label, String info,
        String image, boolean multiple, int mapSize, int markSize, int textSize) {
    String jsLabel = (label == null || label.trim().isBlank()
            ? "null" : "'" + label.replaceAll("'", CommonValues.MyBoxSeparator) + "'");
    String jsInfo = (info == null || info.trim().isBlank()
            ? "null" : "'" + info.replaceAll("'", CommonValues.MyBoxSeparator) + "'");
    String jsImage = (image == null || image.trim().isBlank()
            ? "null" : "'" + StringTools.replaceAll(image, "\\", "/") + "'");
    webEngine.executeScript("addMarker("
            + longitude + "," + latitude
            + ", " + jsLabel + ", " + jsInfo + ", " + jsImage
            + ", " + multiple + ", " + mapSize + ", " + markSize + ", " + textSize + ");");
}
 
源代码29 项目: Learn-Java-12-Programming   文件: HtmlWebView.java
public void start10(Stage primaryStage) {

        Text txt = new Text("Enjoy searching the Web!");

        WebView wv = new WebView();
        WebEngine we = wv.getEngine();
        we.load("http://www.google.com");
        //wv.setZoom(1.5);

/*
        WebHistory history = we.getHistory();
        ObservableList<WebHistory.Entry> entries = history.getEntries();
        for(WebHistory.Entry entry: entries){
            String url = entry.getUrl();
            String title = entry.getTitle();
            Date date = entry.getLastVisitedDate();
        }
*/

        VBox vb = new VBox(txt, wv);
        vb.setSpacing(20);
        vb.setAlignment(Pos.CENTER);
        vb.setStyle("-fx-font-size: 20px;-fx-background-color: lightblue;");
        vb.setPadding(new Insets(10, 10, 10, 10));

        Scene scene = new Scene(vb,750,500);
        primaryStage.setScene(scene);
        primaryStage.setTitle("JavaFX with the window to another server");
        primaryStage.onCloseRequestProperty()
                .setValue(e -> System.out.println("Bye! See you later!"));
        primaryStage.show();
    }
 
源代码30 项目: davmail   文件: O365InteractiveJSLogger.java
public static void register(WebEngine webEngine) {

        try {
            Class jsObjectClass = Class.forName("netscape.javascript.JSObject");
            Method setMemberMethod = jsObjectClass.getDeclaredMethod("setMember", String.class,Object.class);

            JSObject window = (JSObject) webEngine.executeScript("window");
            setMemberMethod.invoke(window, "davmail", new O365InteractiveJSLogger());

            webEngine.executeScript("console.log = function(message) { davmail.log(message); }");
        } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            LOGGER.info("netscape.javascript.JSObject not available");
        }

    }
 
 类所在包
 同包方法