JxBrowser onStartLoadingFrame 数据传递问题
JxBrowser onStartLoadingFrame Data Passing Issue
我目前使用的是 JxBrowser 6.19.1,我想问一下是否可以在我第一次开始加载页面时使用 onStartLoadingFrame 设置一个变量值。然后我将在页面中使用该数据。
例如:
final JFrame frame = new JFrame("Hello World!");
final Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(400, 300);
frame.setVisible(true);
browser.addLoadListener(new LoadAdapter() {
@Override
public void onStartLoadingFrame(StartLoadingEvent event) {
browser.executeJavaScriptAndReturnValue("var data = 1"); // does not work every single time, real question
}
});
browser.loadURL("echo.html");
我的 echo.html 将是这样的:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<h1>Echo Page</h1>
<script>
alert(data);
</script>
</body>
问题来了,有时提示alert,有时不提示。有谁知道为什么? (由于多线程?)这有什么解决办法吗?
希望有人能帮助我。谢谢。
如果您需要在加载的网页上执行任何其他 JavaScript 之前执行一些 JavaScript 代码,那么您应该使用 onScriptContextCreated
JavaScript 上下文事件如下图:
browser.addScriptContextListener(new ScriptContextAdapter() {
@Override
public void onScriptContextCreated(ScriptContextEvent event) {
event.getBrowser().executeJavaScript("var data = 1");
}
});
在这种情况下,data
JavaScript 变量将被正确设置,网页上的脚本将始终按预期运行。
我目前使用的是 JxBrowser 6.19.1,我想问一下是否可以在我第一次开始加载页面时使用 onStartLoadingFrame 设置一个变量值。然后我将在页面中使用该数据。
例如:
final JFrame frame = new JFrame("Hello World!");
final Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(400, 300);
frame.setVisible(true);
browser.addLoadListener(new LoadAdapter() {
@Override
public void onStartLoadingFrame(StartLoadingEvent event) {
browser.executeJavaScriptAndReturnValue("var data = 1"); // does not work every single time, real question
}
});
browser.loadURL("echo.html");
我的 echo.html 将是这样的:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<h1>Echo Page</h1>
<script>
alert(data);
</script>
</body>
问题来了,有时提示alert,有时不提示。有谁知道为什么? (由于多线程?)这有什么解决办法吗?
希望有人能帮助我。谢谢。
如果您需要在加载的网页上执行任何其他 JavaScript 之前执行一些 JavaScript 代码,那么您应该使用 onScriptContextCreated
JavaScript 上下文事件如下图:
browser.addScriptContextListener(new ScriptContextAdapter() {
@Override
public void onScriptContextCreated(ScriptContextEvent event) {
event.getBrowser().executeJavaScript("var data = 1");
}
});
在这种情况下,data
JavaScript 变量将被正确设置,网页上的脚本将始终按预期运行。