无法获得javafx和webview来处理google javascript

时间:2015-10-10 03:10:44

标签: javascript webview javafx

我在使用javafx收听谷歌搜索结果时遇到问题。我确定这是由于javascript实时结果,但我无法找到解决方法。

Document doc = engine.getDocument();
NodeList elements = doc.getElementsByTagName("a");
for(int i=0; i < elements.getLength();i++){
    ((EventTarget) elements.item(i)).addEventListener("click", listener, false);
}

在Chrome浏览器中,我可以右键单击结果并检查。 DOM显示一切都很好。如何让javafx复制chrome浏览器可以执行的操作?

1 个答案:

答案 0 :(得分:1)

我能够这样做:

Class1是javafx webview应用程序 Class2是javascript和java之间的桥梁

在class1中我创建了一个类似的方法。单击按钮即可使用它。

private void setJSlisteners(){
    Class2 bridge = new Class2();
    JSObject hrefWindow = (JSObject) engine.executeScript("window");
    hrefWindow.setMember("java", bridge);
    engine.executeScript("var links = document.getElementsByTagName(\"a\");"
            + "for (var i = 0; i < links.length; i++) {"
            + "links[i].addEventListener(\"click\", function(){"
                + "java.log(this.getAttribute(\"href\"));"
            + "});"
            + "}");

}
在class2中,log方法看起来像这样。

public void log(String text)
{
    System.out.println(text);
}