阻止 Javafx WebView/Web 引擎中的超链接
Block hyperlinks in a Javafx WebView / Web Engine
我在 JavaFX 中有一个 WebView
。我想添加一个事件处理程序来决定是否要阻止超链接或重定向用户。我已经看过this question。但是没有描述阻止重定向的方法。
编辑:
getWebEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == Worker.State.SUCCEEDED) {
EventListener listener = new EventListener() {
public void handleEvent(Event ev) {
System.out.println("KLIKNIETO!!!");
}
};
Document doc = getWebEngine().getDocument();
NodeList lista = doc.getElementsByTagName("a");
System.out.println("Count: " + lista.getLength());
for (int i=0; i<lista.getLength(); i++)
((EventTarget)lista.item(i)).addEventListener("click", listener, false);
}
}
});
导入(这些是错误的):
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
您提供的答案是完美的解决方案。您可能希望 consume
事件以防止 link 被 openend/browser 重定向。 (您要找的是哪个?)
我假设您知道如何重定向并执行您提到的检查。如果没有,请详细说明您的目标,以及 post 您尝试过的一些代码。
我在 JavaFX 中有一个 WebView
。我想添加一个事件处理程序来决定是否要阻止超链接或重定向用户。我已经看过this question。但是没有描述阻止重定向的方法。
编辑:
getWebEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == Worker.State.SUCCEEDED) {
EventListener listener = new EventListener() {
public void handleEvent(Event ev) {
System.out.println("KLIKNIETO!!!");
}
};
Document doc = getWebEngine().getDocument();
NodeList lista = doc.getElementsByTagName("a");
System.out.println("Count: " + lista.getLength());
for (int i=0; i<lista.getLength(); i++)
((EventTarget)lista.item(i)).addEventListener("click", listener, false);
}
}
});
导入(这些是错误的):
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
您提供的答案是完美的解决方案。您可能希望 consume
事件以防止 link 被 openend/browser 重定向。 (您要找的是哪个?)
我假设您知道如何重定向并执行您提到的检查。如果没有,请详细说明您的目标,以及 post 您尝试过的一些代码。