Reputation: 199
I am having issues getting javafx to listen on google results. I'm sure it's due to the javascript live results but I can't find a way around it.
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);
}
in a chrome browser I'm able to right click the result and Inspect. The DOM shows everything fine. How do I have javafx replicate what a chrome browser can do?
Upvotes: 0
Views: 87
Reputation: 199
I was able to do it like so:
Class1 is the javafx webview application Class2 is a bridge between javascript and java
in class1 i created a method like so. It can be used upon clicking a button.
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\"));"
+ "});"
+ "}");
}
in class2 the log method looks like this.
public void log(String text)
{
System.out.println(text);
}
Upvotes: 1