【问题标题】:JxBrowser - How to react on a HTML-button click in a Kiosk app without mouse-eventsJxBrowser - 如何在没有鼠标事件的情况下对 Kiosk 应用程序中的 HTML 按钮单击做出反应
【发布时间】:2017-12-08 09:34:35
【问题描述】:

我想在我的 Kiosk 应用程序中使用 JxBrowser(基于 Swing)。由于其性质,没有外部鼠标和键盘可用。但我想收到一个事件,如果有人点击特定网站上的 (HTML-) 按钮。

最初,我在浏览器视图中使用鼠标侦听器来接收这些事件。在我的 Mac(带有外接鼠标)上,我收到了鼠标事件,但在我的终端(没有外接鼠标)上,我没有从浏览器视图中收到任何鼠标事件。我认为触摸事件像鼠标事件一样处理 - 但不幸的是事实并非如此。

我尝试了其他事件类型但没有成功。我还尝试将(透明)JButton 添加到浏览器视图中。它在浏览器视图的顶部全屏显示,但没有透明度。

还有其他可能收到这样的事件吗?

【问题讨论】:

    标签: java swing mouseevent kiosk jxbrowser


    【解决方案1】:

    一般情况下,您需要按照以下步骤操作:

    1. 等到网页加载完毕 - 监听浏览器加载事件: browser.addLoadListener(new YourLoadAdapter()

    2. 搜索页面上所有可点击的 HTML 元素(链接、按钮等),使用简单的 DOM API 或更复杂的 XPath 表达式:
      List<DOMElement> hyperlinks = document.findElements(By.tagName("a"));

    3. 在每个节点上附加一个监听器:
      element.addEventListener(DOMEventType.OnClick, new YourDOMEventListener());

    几年前我将 JxBrowser 用于一个非常相似的应用程序,当时 JxBrowser 基于 Mozilla。基于这种经验,我不太喜欢将外部 Web 浏览器嵌入到 Java 应用程序中。相同的行为可以作为标准 Chrome 应用程序或扩展程序实现,维护问题和意外行为更少。

    【讨论】:

    • 非常感谢@manicka。它工作得很好,你为我节省了很多时间。
    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2012-10-22
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多