1

再会!

我使用 jxBrowser (6.0.2) 从 JavaSwing 桌面应用程序中显示 HTML。它有效,但我发现了以下“功能”。如果 JavaScript 包含诸如“while (true) { ... }”之类的错误,页面变得无响应,但是所有标准浏览器都允许在非常短的时间(10-30 秒)后停止此脚本。JxBrowser 在 8 分钟后执行类似的过程。还会发生内存泄漏(~1.7 Gb)。

大家知道如何缩短响应时间间隔(8 分钟)吗?当页面变得无响应时,JxBrowser 如何记录类似的情况?是否存在一些 java-callback 允许我的 swing-application 知道我的 HTML 页面变得无响应?

我的 HTML 页面:

<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>Loader</title>
</head>

<script type="text/javascript">
    function myFunc() {
        while (true) {
            try {
                console.log("xxxxx");
            } catch (exception) {
                alert(exception);
            }
        }
    }
</script>

<body id="body1">
    <button onclick="myFunc()">Load</button>
</body>
</html>

我的java代码:

package main;

import java.awt.BorderLayout;
import java.util.logging.Level;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

public class MainClass {
    public static void main(String[] args) {        
        LoggerProvider.getBrowserLogger().setLevel(Level.ALL);
        LoggerProvider.getIPCLogger().setLevel(Level.ALL);
        LoggerProvider.getChromiumProcessLogger().setLevel(Level.ALL);

        Browser browser = new Browser();

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Browser One", new JButton ("xxxx"));
        tabbedPane.addTab("Browser Two", new BrowserView(browser));

        JFrame frame = new JFrame();
        frame.getContentPane().add(tabbedPane, BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        browser.loadURL("#######/Main.html");
    }
}
4

0 回答 0