再会!
我使用 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");
}
}