寻找一个插件来自动选择当前页面中所选单词的所有实例
Posted
技术标签:
【中文标题】寻找一个插件来自动选择当前页面中所选单词的所有实例【英文标题】:Looking for an addon to automatically select all instances of selected word in the current page 【发布时间】:2014-04-05 02:21:31 【问题描述】:我正在寻找要安装的插件,以便当您在网页中选择一个单词(通过单击)时,它会自动突出显示该文本中该选定单词的所有实例。曾经有这个 highlightall 插件,但它不再适用于最新版本的 Firefox!这非常方便,因为您所要做的就是选择该单词,然后所有实例都会突出显示
这样的插件在阅读代码时非常有用,因为您可以简单地选择一个变量名,它会选择代码中已使用该变量的所有位置,以便您更好地理解程序。
【问题讨论】:
好吧,我明白你想要什么。为插件想个好名字,也愿意在wiki页面上写一些设计笔记。生病做一个回购,你可以写它,比如如何使用它以及你希望这个插件如何。 @Noitidart 老兄只要 50 赏金,你会让这个人成为插件吗?绝望的? ... 我认为这是一个不错的想法,我愿意去做,我想我可以从中学到很多东西。 【参考方案1】:好吧,我制作了插件并在 AMO 发布了它。我打电话给HiliteOnSelection我链接了它。
使用它告诉我它是如何工作的告诉我你想如何改变它等等。感谢反馈。
超过 50 个赏金也不错,副作用是我学到了很多东西,所以很酷。
【讨论】:
还有改进的余地,如果您想通过提供一些设计说明来帮助我,请告诉我,您可以在 github.com/Noitidart/HiliteOnSelection/wiki 上编辑一个公共 wiki 感谢您提供意见。目前我只有一个建议。您为插件选择的名称不是很具描述性,用户可能无法找到它,我相信第一要务是获得更多用户。为什么不选择“HighlightAllWords”或“HighlightAllOccurrences”或“HighlightandSelectAll”之类的内容,并使用更多关键字提供更详细的描述,如突出显示、出现次数、全选、“对阅读编程代码有用”、“突出显示所有变量在代码中”等。你的工作很完美,只需要营销。 谢谢,我也不喜欢这个名字。我喜欢那些,但希望有一个更有创意的名字。你能写详细的描述和其他我会去的东西吗,我现在正忙于其他一些插件,所以如果你能敲出写作和命名,那就太棒了 我一定会尽力而为,请给我一些时间【参考方案2】:如果你按 ctrl+f 然后点击高亮显示它就会这样做。
如果你想复制它,这里是highlihgt all的代码:
function toggleHighlight(aHighlight)
if (!this._dispatchFindEvent("highlightallchange"))
return;
let word = this._findField.value;
// Bug 429723. Don't attempt to highlight ""
if (aHighlight && !word)
return;
this.browser._lastSearchHighlight = aHighlight;
this.browser.finder.highlight(aHighlight, word);
here it is on mxr
如果您需要更多帮助,请告诉我
【讨论】:
我不知道如何处理这段代码?我也知道 ctrl+f + 按 highlihgt 全部,如果你阅读我的帖子(或访问插件的链接)我不想那样做。 您能向我解释一下这与查找栏有何不同吗? findbar 唯一做的就是计算它的实例数 我说的是点击次数和出拳次数方面的用户体验! @honestann - 打电话给Honestann,你创建了一个TOPIC,我注意到你的插件会突出显示文本,帮助兄弟分享你的代码【参考方案3】:好吧,我的代码非常复杂,因为它执行了多项高级服务,但是如果您要问如何突出显示文本中的单词,最简单的方法是在单词周围添加样式属性。例如:
这个热狗需要更多芥末。
...会变成...
这个炙手可热的<span style="color:#FFFF60">dog</span>
需要更多芥末。
上面会在句子中突出显示“狗”。以上假设黑色背景上的白色文本,其中黄色是一种很好的突出显示颜色。如果文本是白色背景上的黑色,那么 #FFFF60
可能应该类似于 #40FFC0
或 #40FF40
或 #4040FF
或任何你觉得看起来不错的东西。
当你想移除高亮时,你可以删除<span>
元素。在我的情况下,我通常将style="color:#FFFF60"
放在其他一些现有元素中,因此我不会删除元素以删除突出显示,而是删除我添加到元素中的style
属性。
顺便说一句,我更改文本颜色以突出显示术语的原因是因为这不会改变单词的大小,因此文本永远不会重排(并且会破坏格式)。您可能可以将背景颜色更改为突出显示,但我从未尝试过。
要查找某个单词的所有实例,我不知道,但可能 TreeWalker 是解决方案的一部分。
【讨论】:
哎呀!那是相当混乱。您还应该尝试下面的 toggleHighlight 方法,不过很好的分享。 在下面查看我的更新解决方案,您可能也会感兴趣。【参考方案4】:Ok C Graphics 人,这里是代码
好吧,这真的很容易,您甚至不必编写另一个函数。这是在当前标签中突出显示任何单词的代码。
gBrowser.selectedTab.linkedBrowser.finder.highlight(true, 'YOUR_WORD_HERE')
如果要取消高亮,则将第一个参数设置为 false。
您可以在任何选项卡中执行此操作,只需在选项卡中提供浏览器元素。
这里的代码会突出显示第一个选项卡中的所有内容:
gBrowser.tabContainer.childNodes[0].linkedBrowser.finder.highlight(true, 'YOUR_WORD_HERE');
【讨论】:
@CGraphics 我注意到你添加了一个赏金,你到底在寻找什么来提供这个赏金?你想要一个编译好的插件吗?以上是关于寻找一个插件来自动选择当前页面中所选单词的所有实例的主要内容,如果未能解决你的问题,请参考以下文章
IDEA插件系列(101):BrowseWordAtCaret插件——浏览下一个或上一个相同所选单词