我已经看到这个问题弹出一点,但我似乎无法解决这个问题。在加载使用此库的本地index.html文件后,我正在努力访问我的Javascript库。错误说'cytoscape未定义'。
我正在使用LoadListener并等待框架加载invokeAndWaitFinishLoadingMainFrame。
代码如下。
package src.java;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.swing.JFrame;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.Callback;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
public class VisualFrame {
public VisualFrame(final Browser browser, final BrowserView view, final JFrame frame){
frame.setTitle("Visualisation");
frame.setResizable(false);
System.out.println(browser);
browser.addScriptContextListener(new ScriptContextAdapter() {
@Override
public void onScriptContextCreated(ScriptContextEvent event) {
browser.executeJavaScript(event.getJSContext().getFrameId(),"window");
}
});
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
event.getBrowser().executeJavaScript("window");
}
}
});
InputStream urlStream = getClass().getResourceAsStream("../web/cytoscape/index.html");
String html = null;
try (BufferedReader urlReader = new BufferedReader(new InputStreamReader (urlStream))) {
StringBuilder builder = new StringBuilder();
String row;
while ((row = urlReader.readLine()) != null) {
builder.append(row);
}
html = builder.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
final String loadHelloPath = html;
Browser.invokeAndWaitFinishLoadingMainFrame(browser, new Callback<Browser>(){
@Override
public void invoke(Browser arg0) {
browser.loadHTML(loadHelloPath);
System.out.println("HELLO");
}
});
System.out.println(browser.getHTML());
}
}
当我调用event.getBrowser()。executeJavaScript(“cytoscape.js”)时,参数需要是特定的吗?
此外,JxBrowser是否支持所有外部JS库?
提前致谢。
杰克