我目前正在使用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>
问题来了,有时会提示警报,有时却没有。有谁知道为什么? (由于多头?)这是为了解决这个问题吗?
希望有人可以帮助我。谢谢。
答案 0 :(得分:1)
如果您需要在加载的网页上的任何其他JavaScript执行之前执行一些JavaScript代码,那么您应该使用onScriptContextCreated
JavaScript上下文事件,如下所示:
browser.addScriptContextListener(new ScriptContextAdapter() {
@Override
public void onScriptContextCreated(ScriptContextEvent event) {
event.getBrowser().executeJavaScript("var data = 1");
}
});
在这种情况下,data
JavaScript变量将被正确设置,网页上的脚本将始终按预期工作。