我在使用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浏览器可以执行的操作?
答案 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);
}