JavaFX stop opening URL in WebView - open in browser instead

前端 未结 9 1228
無奈伤痛
無奈伤痛 2020-12-09 05:12

The embedded WebView browser I am using needs special handling for particular URLs, to open them in the native default browser instead of WebView. The actual browsing part w

9条回答
  •  自闭症患者
    2020-12-09 05:52

    There is another method for handling this.

    You can add an event listener to the DOM elements and intercept it that way.

    Example:

    NodeList nodeList = document.getElementsByTagName("a");
                for (int i = 0; i < nodeList.getLength(); i++)
                {
                    Node node= nodeList.item(i);
                    EventTarget eventTarget = (EventTarget) node;
                    eventTarget.addEventListener("click", new EventListener()
                    {
                        @Override
                        public void handleEvent(Event evt)
                        {
                            EventTarget target = evt.getCurrentTarget();
                            HTMLAnchorElement anchorElement = (HTMLAnchorElement) target;
                            String href = anchorElement.getHref();
                            //handle opening URL outside JavaFX WebView
                            System.out.println(href);
                            evt.preventDefault();
                        }
                    }, false);
                }
    

    Where document is the DOM document object. Make sure this is done after the document has finished loading.

提交回复
热议问题