Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFXWebView:addEventListener用于单击而不是超链接?_Java_Javafx_Webview - Fatal编程技术网

JavaFXWebView:addEventListener用于单击而不是超链接?

JavaFXWebView:addEventListener用于单击而不是超链接?,java,javafx,webview,Java,Javafx,Webview,在WebView中,是否有一种方法可以执行函数,而不是在给定的超链接上单击 我试图在WebView上添加一个事件处理程序以始终执行该函数,然后向超链接添加一个事件侦听器以尝试使用该事件。但是,event.preventDefault()和event.stopPropagation()实际上并不停止事件,因此在单击超链接时仍会执行该函数 在此示例中,单击超链接时仍会打印消息: 导入javafx.application.application; 导入javafx.concurrent.Worker;

在WebView中,是否有一种方法可以执行函数,而不是在给定的超链接上单击

我试图在WebView上添加一个事件处理程序以始终执行该函数,然后向超链接添加一个事件侦听器以尝试使用该事件。但是,
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()不适用于。