JavaFXWebView:addEventListener用于单击而不是超链接?
在WebView中,是否有一种方法可以执行函数,而不是在给定的超链接上单击 我试图在WebView上添加一个事件处理程序以始终执行该函数,然后向超链接添加一个事件侦听器以尝试使用该事件。但是,JavaFXWebView:addEventListener用于单击而不是超链接?,java,javafx,webview,Java,Javafx,Webview,在WebView中,是否有一种方法可以执行函数,而不是在给定的超链接上单击 我试图在WebView上添加一个事件处理程序以始终执行该函数,然后向超链接添加一个事件侦听器以尝试使用该事件。但是,event.preventDefault()和event.stopPropagation()实际上并不停止事件,因此在单击超链接时仍会执行该函数 在此示例中,单击超链接时仍会打印消息: 导入javafx.application.application; 导入javafx.concurrent.Worker;
event.preventDefault()
和event.stopPropagation()
实际上并不停止事件,因此在单击超链接时仍会执行该函数
在此示例中,单击超链接时仍会打印消息:
导入javafx.application.application;
导入javafx.concurrent.Worker;
导入javafx.scene.scene;
导入javafx.scene.input.MouseEvent;
导入javafx.scene.layout.VBox;
导入javafx.scene.web.WebView;
导入javafx.stage.stage;
导入org.w3c.dom.Document;
导入org.w3c.dom.NodeList;
导入org.w3c.dom.events.EventListener;
导入org.w3c.dom.events.EventTarget;
公共类主扩展应用程序{
公共静态void main(字符串[]args){launch(args);}
公共无效开始(阶段primaryStage){
//设置WebView
WebView WebView=新建WebView();
String content=“
某些文本
链接:”;
webView.getEngine().loadContent(内容);
//添加超链接侦听器
webView.getEngine().getLoadWorker().stateProperty().addListener(
(o、旧、州)->{
如果(state!=Worker.state.successed){return;}
//创建事件侦听器
EventListener listenerA=事件->{
System.out.println(“试图阻止单击”);
//实际上并没有阻止点击
event.preventDefault();
event.stopPropagation();
};
Document doc=webView.getEngine().getDocument();
//将事件处理程序添加到超链接。
NodeList NodeList=doc.getElementsByTagName(“a”);
for(int i=0;iSystem.out.println(“我希望只有在超链接外单击时才打印此内容”);
//设置场景
VBox VBox=新的VBox(webView);
场景=新场景(vBox,960600);
初级阶段。场景(场景);
primaryStage.show();
}
}
我之所以这么做是因为我使用WebView作为Swing UI的透明覆盖层;我已将单击转发到Swing组件,但如果用户单击覆盖超链接,我不希望将单击转发到Swing。你的意思是?@M.S.我会,除了consume()不适用于。你的意思是?@M.S.我会,除了consume()不适用于。