标签: javafx-webengine

对于JavaFX的WebEngine,如何收到javascript错误的通知?

我正在尝试在JavaFX的WebView中运行一些包含Javascript的SVG.我知道我正在尝试运行的一些脚本有错误,我正在试图找出如何将它们打印到控制台,以便我可以调试它们.我尝试了以下内容,但从未调用过WebErrorEvent:

WebEngine webEngine = browser.getEngine();
webEngine.setOnError(new EventHandler<WebErrorEvent>()
{
    @Override
    public void handle(WebErrorEvent event)
    {
        System.err.println(event);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是从此控件获取javascript错误反馈的正确方法吗?

javascript java svg javafx javafx-webengine

5
推荐指数
1
解决办法
1508
查看次数

从最小化WebView还原后在javafx中被禁用

我的问题是,当我从Windows任务栏WebView恢复最小化的javafx应用程序时被禁用。

调整大小阶段后,它将变为启用状态。

主要的Java代码:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            AnchorPane root = new AnchorPane();
            FXMLLoader loader = new FXMLLoader(getClass().getResource("Browser.fxml"));
            root = loader.load();
            Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.setTitle("Shivam Jewels ERP");
            primaryStage.setMaximized(true);
            primaryStage.show();
            primaryStage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {

                @Override
                public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
                    if (t1) {
                        System.out.println("minimized:");
                    }
                }
            });
            primaryStage.maximizedProperty().addListener(new ChangeListener<Boolean>() {

                @Override
                public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                    if (newValue) …
Run Code Online (Sandbox Code Playgroud)

javafx webview javafx-2 javafx-8 javafx-webengine

5
推荐指数
1
解决办法
452
查看次数

如何在关闭阶段 JavaFX 后停止 WebEngine?

当我使用 WebEngine 创建新舞台来播放 YouTube 视频时,在我关闭它之后 - Youtube 继续在后台播放。如果我使用“Platform.exit” - 它会关闭我所有的JavaFX应用程序,但我只想关闭为YouTube创建的阶段。

这是我为 YouTube 播放器设计的课程:

public class YouTube_player  {
    public YouTube_player(String url) {
        final Group root = new Group();
        Scene scene = new Scene(root, 820, 480);

        final Stage stage = new Stage();
        final WebView webView = new WebView();
        final WebEngine webEngine = webView.getEngine();
        webEngine.loadContent(url);
        root.getChildren().add(webView);
        stage.centerOnScreen();

        stage.setScene(scene);
        stage.show();
        stage.setOnCloseRequest(new EventHandler<WindowEvent>(){

            @Override
            public void handle(WindowEvent event) {
              //What i should put here to close only this stage.
              //Platform.exit - closes all my stages. …
Run Code Online (Sandbox Code Playgroud)

java youtube javafx stage javafx-webengine

4
推荐指数
1
解决办法
4801
查看次数

JavaFX WebView无法加载某些站点

我正在尝试使用JavaFX的WebView来加载这个站点,但我得到的只是一个空白屏幕.WebView在其他网站上运行得非常好; 它在ACID3上获得100/100并加载其他HTTPS站点而没有任何问题.

我也找不到任何特别错误的网站.它具有由适当的CA签署的正确,未过期的证书,并且SSL实验室报告B级.我尝试了所有主流浏览器,没有人报告任何证书或SSL相关问题; 该网站渲染所有这些都很好.

任何帮助将不胜感激.即使是一个简单的"是的网站也为我打破了"或"这里没有问题"会有很大帮助.

我在Windows 8.1 64位上使用Java SDK 1.8.0_45-b14.

java javafx webview javafx-8 javafx-webengine

4
推荐指数
1
解决办法
3189
查看次数

如何从 Javafx 编辑 HTML 页面(在 Web 视图中)而不重新加载页面?

这就是我加载页面的方式,我想在浏览器中修改它

    WebView browser = new WebView();
    WebEngine engine = browser.getEngine();
    String cwd = System.getProperty("user.dir");
    String name = "\\src\\web\\index.html";
    engine.loadContent(getPATHtoHTML(cwd + name));
Run Code Online (Sandbox Code Playgroud)

html java javafx webview javafx-webengine

4
推荐指数
1
解决办法
1707
查看次数

javafx 16 WebEngine 异常“SSL 握手失败”

我正在将 Android 应用程序移植到 javaFX 以进行 Windows 部署,我对 javaFX 和桌面部署很陌生,但对 java 来说并不陌生。

该应用程序包含一个 WebView,它加载通过 Json 从服务器获取的 url(因此本质上可以是任何内容)。

openJDK 14、openJfx 16、intellij idea Ultimate 2021.1.3、gradle:插件:org.beryx.jlink 和 org.openjfx.javafxplugin

当我在开发和测试中(在 Windows 10 计算机上)运行该程序时,效果很好,但是当它在 Windows 计算机(到目前为止的任何 Windows 10)上打包和部署时,我得到一个“java.lang.Throwable:SSL 握手”加载页面时出现“失败”异常。

这是堆栈跟踪:

    [ERROR] 2021-07-14 14:13:53.737 [JavaFX Application Thread] MediaElementWeb - WebView Failed: 
java.lang.Throwable: SSL handshake failed
    at javafx.scene.web.WebEngine$LoadWorker.describeError(WebEngine.java:1440) ~[javafx.web:?]
    at javafx.scene.web.WebEngine$LoadWorker.dispatchLoadEvent(WebEngine.java:1379) ~[javafx.web:?]
    at javafx.scene.web.WebEngine$PageLoadListener.dispatchLoadEvent(WebEngine.java:1240) ~[javafx.web:?]
    at com.sun.webkit.WebPage.fireLoadEvent(WebPage.java:2524) ~[javafx.web:?]
    at com.sun.webkit.WebPage.fwkFireLoadEvent(WebPage.java:2369) ~[javafx.web:?]
    at com.sun.webkit.network.URLLoaderBase.twkDidFail(Native Method) ~[javafx.web:?]
    at com.sun.webkit.network.URLLoader.notifyDidFail(URLLoader.java:799) ~[javafx.web:?]
    at com.sun.webkit.network.URLLoader.lambda$didFail$6(URLLoader.java:782) ~[javafx.web:?]
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447) ~[javafx.graphics:?]
    at java.security.AccessController.doPrivileged(AccessController.java:391) ~[?:?]
    at …
Run Code Online (Sandbox Code Playgroud)

ssl javafx jlink javafx-webengine java-14

4
推荐指数
1
解决办法
999
查看次数

JavaFX:在 WebView img 标签中未加载本地图像

以下是我的代码。一切安好。我可以加载远程页面。我可以放置 HTML 内容,但我的img标签显示X符号,表示它无法加载图像。

注意:我的图像与JavaFXSmiley 文件夹中的类位于同一个包中,我可以列出所有图像,这意味着路径没有问题。

import java.awt.BorderLayout;
import java.io.File;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class JavaFX {
    static WebView webView;
    static WebEngine webEngine;
    static String imgs = "";

    public JavaFX() {
        File f = new File(getClass().getResource("/Smiley").getFile());
        for (File fs : f.listFiles()) {
            imgs += "<img src=\""+fs+"\" width='50' />";
        }
        System.out.println(imgs);
    }
    
    private void initAndShowGUI() {
        // This method is invoked on …
Run Code Online (Sandbox Code Playgroud)

html java javafx webview javafx-webengine

3
推荐指数
1
解决办法
4120
查看次数

是否可以在不使用Javascript的情况下检索Web引擎中的HTML元素?

有没有办法使用?识别被点击的元素的类型webView(如文本框/广播/按钮等)webEngine.getDocument()

假设我点击文本字段,我可以得到点击位置的x,y坐标.是否有可能识别该特定位置的元素?像document.elementFromPoint()Javascript中的方法.

我可以使用Jquery/Javascript来做到这一点.但由于我们可以访问Document对象及其元素,有没有办法识别使用JavaFX本身?

html dom javafx webview javafx-webengine

3
推荐指数
1
解决办法
2567
查看次数

如何将JavaFX WebView设置为与场景一样大?

我有一个JavaFX WebView,我希望它与开始时的场景一样大.如果我可以通过场景调整大小,这将是完美的.
但是现在我只关注初始尺寸.

@Override
public void start(Stage stage) {
    try {
        Scene scene = new Scene(createWebViewPane(), 1920, 1080);
        scene.getStylesheets().add(getClass().getResource("Styles/application.css").toExternalForm());
        stage.setScene(scene);
        stage.show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了一个宽度为1920px,高度为1080px的场景.createWebViewPane()在窗格上创建WebView.

private Pane createWebViewPane() {
    final Pane pane = new Pane();
    pane.minWidth(1920);
    pane.minHeight(1080);
    WebView browser = new WebView();
    browser.minWidth(1920);
    browser.prefWidth(1920);
    browser.minHeight(1080);
    browser.prefHeight(1080);
    WebEngine webEngine = browser.getEngine();
    webEngine.load(getClass().getResource("index.html").toExternalForm());
    pane.getChildren().add(browser);
    return pane;
}
Run Code Online (Sandbox Code Playgroud)

在那里,我尝试设置宽度/高度.我也在样式表中设置它.

web-view{
    -fx-font-scale: 1;  
    -fx-min-width: 1920px;   
    -fx-min-height: 1080px;   
    -fx-pref-width: 100%; 
    -fx-pref-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

但是这些属性似乎都不会影响WebView.它仍然具有默认大小.宽800像素,高600像素.

css java javafx webview javafx-webengine

3
推荐指数
1
解决办法
5288
查看次数

JavaFX在WebEngine中禁用突出显示和复制模式

我正在切换JEditorPaneWebEngine(JavaFX).
我曾经按如下方式锁定文本突出显示(选择)JEditorPane.

my_editor.setEditable(false);
my_editor.getInputMap().put(KeyStroke.getKeyStroke("control C"), "none");
Run Code Online (Sandbox Code Playgroud)

现在我喜欢这样做WebEngine,我怎么能这样做?禁用复制,突出显示和编辑模式.谢谢.

java javafx javafx-webengine

2
推荐指数
1
解决办法
1988
查看次数

标签 统计

javafx ×10

javafx-webengine ×10

java ×7

webview ×6

html ×3

javafx-8 ×2

css ×1

dom ×1

java-14 ×1

javafx-2 ×1

javascript ×1

jlink ×1

ssl ×1

stage ×1

svg ×1

youtube ×1