JxBrowser - 如何在没有鼠标事件的情况下对 Kiosk 应用程序中的 HTML 按钮单击做出反应
JxBrowser - How to react on a HTML-button click in a Kiosk app without mouse-events
我想在我的 Kiosk 应用程序(基于 Swing)中使用 JxBrowser。就其性质而言,没有外部鼠标和键盘可用。但是我想收到一个事件,如果有人在特定网站上单击 (HTML-) 按钮。
原来,我是在浏览器视图中使用鼠标监听器来接收这些事件的。在我的 Mac(使用外部鼠标)上,我收到了鼠标事件,但是在我的终端(没有外部鼠标)上,我没有从浏览器视图中收到任何鼠标事件。我认为触摸事件的处理方式与鼠标事件类似 - 但不幸的是,情况并非如此。
我尝试了其他事件类型但没有成功。我还尝试向浏览器视图添加一个(透明的)JButton。它在浏览器视图的顶部全屏显示,但没有透明度。
是否还有其他可能接收此类事件?
一般来说,您需要遵循以下步骤:
等待网页加载 - 监听浏览器加载事件:
browser.addLoadListener(new YourLoadAdapter()
搜索页面上所有可点击的 HTML 元素(链接、按钮等),使用简单的 DOM API 或更复杂的 XPath 表达式:
List<DOMElement> hyperlinks = document.findElements(By.tagName("a"));
在它们每个上附加一个监听器:
element.addEventListener(DOMEventType.OnClick, new YourDOMEventListener());
几年前,我将 JxBrowser 用于一个非常相似的应用程序,当时 JxBrowser 是基于 Mozilla 的。基于那次经历,我不太喜欢将外部 Web 浏览器嵌入到 Java 应用程序中。相同的行为可以作为标准 Chrome 应用程序或扩展程序实现,维护问题和意外行为更少。
我想在我的 Kiosk 应用程序(基于 Swing)中使用 JxBrowser。就其性质而言,没有外部鼠标和键盘可用。但是我想收到一个事件,如果有人在特定网站上单击 (HTML-) 按钮。
原来,我是在浏览器视图中使用鼠标监听器来接收这些事件的。在我的 Mac(使用外部鼠标)上,我收到了鼠标事件,但是在我的终端(没有外部鼠标)上,我没有从浏览器视图中收到任何鼠标事件。我认为触摸事件的处理方式与鼠标事件类似 - 但不幸的是,情况并非如此。
我尝试了其他事件类型但没有成功。我还尝试向浏览器视图添加一个(透明的)JButton。它在浏览器视图的顶部全屏显示,但没有透明度。
是否还有其他可能接收此类事件?
一般来说,您需要遵循以下步骤:
等待网页加载 - 监听浏览器加载事件:
browser.addLoadListener(new YourLoadAdapter()
搜索页面上所有可点击的 HTML 元素(链接、按钮等),使用简单的 DOM API 或更复杂的 XPath 表达式:
List<DOMElement> hyperlinks = document.findElements(By.tagName("a"));
在它们每个上附加一个监听器:
element.addEventListener(DOMEventType.OnClick, new YourDOMEventListener());
几年前,我将 JxBrowser 用于一个非常相似的应用程序,当时 JxBrowser 是基于 Mozilla 的。基于那次经历,我不太喜欢将外部 Web 浏览器嵌入到 Java 应用程序中。相同的行为可以作为标准 Chrome 应用程序或扩展程序实现,维护问题和意外行为更少。