gpt4 book ai didi

java - SWT 浏览器关注下一个和上一个高亮文本

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:02 24 4
gpt4 key购买 nike

我正在开发一个带有 SWT 浏览器小部件的小型应用程序。我用

突出显示搜索文本词
<a id="xyz" href=''><mark>test</mark></a>

在 HTML 文档中。并以这种方式替换 HTML 文本中的所有搜索词,以便我们突出显示所有搜索词。

    htmltext.replaceAll("(?i)"+Pattern.quote(searchword), "\\<a id='xyz' href=''> <mark>$0\\</mark></a>

我想实现的功能是,如果我点击下一个按钮,下一个突出显示的单词应该获得焦点,如果我点击上一个按钮,前一个突出显示的文本应该获得焦点。如何在 Eclipse RCP 应用程序中使用 Javascript 完成 Next 和 Previous Hit。

最佳答案

最好将 JavaScript 与 Java 代码相结合来解决这个问题。这取决于您要处理哪种 HTML 内容,它是有状态的(例如无法重新加载)、带有大量 JS 代码的动态内容,还是纯静态内容。在大多数情况下,最好的解决方案是将大部分逻辑用 JS 编写,只用 Java 编写最少的代码以将 JS 操作绑定(bind)到 SWT GUI。

有几件事你需要实现:

  1. 关键字搜索
  2. 切换突出显示
  3. 将突出显示从一个词切换到另一个词

<强>1。搜索:您意识到您将无法搜索跨越许多 HTML 元素的单词,例如 W<span>o</span>rd ?如果没问题,那么您可以像现在一样从 Java 中搜索和替换。我会用 id 单独标记每个单词匹配:<span id="match1">并记住总共找到了多少匹配项。

您也可以在 JS 端进行此类搜索,方法是添加一个循环访问 DOM 并搜索特定文本并将其用另一个 DOM 对象包装的函数。

<强>2。切换突出显示:最好用 JavaScript 完成。在您的 HTML 中附加一个 JS 代码片段,用于切换 DOM 元素样式。就像是:`

function highlight(id) {
document.getElementById(id).className = 'highlighted'
}

您将能够通过调用 swtBrowser.execute("highlight('match1')") 从 SWT 调用此 JS此外,您应该实现取消突出显示的功能。

<强>3。在元素之间切换突出显示:这可以在 Java 端和 JS 端完成。我可能会选择 JS 并添加两个函数:highlightNext()highlightPrev()那只会调用highlight()使用适当的 ID 运行。然后在 Java 中,您可以制作通过 SWTBrowser.execute() 调用 JS 函数的 SWT 按钮。

关于java - SWT 浏览器关注下一个和上一个高亮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com