在chrome查找模式下,可以高亮页面中所有匹配的单词
vimium 也可以这样做吗?
现在不行。 我认为如果补丁不会造成明显的延迟,我们会接受它。
这将是一项相当大的任务——假设我们仍然使用 window.find() 来执行搜索,我们需要重复调用它以显示所有匹配项,然后显示我们自己的突出显示 UI。
如果我们最终遇到了那个麻烦,我们应该撕掉 Safari 的比赛美学,IMO。
+1 此功能。
+1
Vimium 太棒了! 就我而言,这是唯一缺少的部分。
+1 此功能。 我实际上想自己提出这个建议,但我有“我不能成为唯一一个”的感觉。
耶!
+1
+1
如果/当这得到实施时,也可以像 Chromium 一样在滚动条中直观地看到所有匹配项。
+1
最近发现了 vimium,不敢相信我没有早点安装它。
+1
+1
+1
+1
+1
我认为这将是另一个杀手级功能
+1
请停止回复无用的 +1 评论。 它不会为讨论添加任何内容,并且会浪费很多人的时间,因为他们会收到有关您无用的“贡献”的通知。 使用“观看”功能订阅一张票。
+1
+1,默认的 chrome 会突出显示所有匹配的命中。 如果再次实现会是性能问题,是否可以直接调用chrome的搜索?
可以直接调用chrome的搜索吗?
不。
要实现这样的东西,需要类似(更新的)#1081 这样的东西,这样浏览器就不会挂在每次搜索上,这会大大增加开发/维护的负担。
关闭。
尽管它很受欢迎,但我们真的没有办法实现它。
(目前,Vimium 实际上根本不做高亮显示。我们只是调用window.find()
。)
4年...
+1 如果可以实现,这确实是一个很棒的功能。
我做了一些研究。 这似乎是这样做的http://stackoverflow.com/a/5887719/96100 (解决方案包括 IE,因此可以通过删除 IE 部分来进一步简化)
但我认为还有一个问题 - 何时以及如何删除突出显示。 对于什么时候,我想什么时候开始下一次搜索或执行:noh
; 至于如何,我假设execCommand('undo')
会这样做。
真的很期待这个功能。
这是必需的,并且不确定它是否应该是 vimium 特定的功能,但其他类似 vim 的扩展可以做到这一点(例如 surfingkeys )。 已经快 5 年了,这个功能还没有出现。 世界正在发生什么?
我做了一些研究。 这似乎是这样做的http://stackoverflow.com/a/5887719/96100 (解决方案包括 IE,因此可以通过删除 IE 部分来进一步简化)
这个解决方案似乎涉及对页面 DOM 的内联修改,这让我很不舒服。
世界正在发生什么?
这很难正确完成(或者至少让我满意)。
一个完整的实现必须
class SuppressPrintable
(或者,更难地突出显示lass Supp
)<span class="pl-k">class</span> <span class="pl-en" style="background-color: transparent;">SuppressPrintable</span> <span class="pl-k">extends</span> <span class="pl-e">Mode</span>
test<img src="#">test
查找并突出显示testtest
test<img src="#">test
,就像本机查找一样test<input type="text">test
找到并突出显示testtest
test<input type="text">test
(如 Firefox),要么不(如 Chrome)。white-space: normal
或nowrap
。 test string
呈现为test string
,所以我们需要找到它。 (surfingkeys 不能这样做,因为它使用node.data
)white-space: pre
, pre-line
或pre-wrap
。 test string
呈现为test string
,所以我们需要找到<br />
或<p></p>
)。 (冲浪键不能这样做)Test<br />Test
应该通过搜索Test\nTest
(或者Test\r\nTest
? )<p>Test</p><p>Test</p>
应该通过搜索Test\n\nTest
(或Test\r\n\r\nTest
)找到并突出显示<input>
s、 <textarea>
s、 <button>
s 等中查找并突出显示匹配项。这是正确执行的主要麻烦。我们可以使用innerText
属性来获取页面的文本表示,它告诉我们大多数匹配项(除了——特别是——最后一个要点中提到的那些),以及 Vimium 使用的匹配项。 然而,为了突出显示(甚至创建一个不使用window.find
),我们必须将文本搜索的结果(在innerText
)映射回 DOM 中的范围。
我建议的(懒惰)方法将涉及一种穷人的二进制搜索,创建Range
s ,并使用toString()
映射到innerText
。 我对自己实施这个并不特别感兴趣。
看起来这是一个非常需要的功能,但也许所有的需求加在一起都太大而无法解决。 也许一组较小的子步骤可能会使这更易于访问。
+1
6年后,我仍然希望有这个功能
扩展Chrome Regex Search
使用一种非常危险的方式来实现突出显示功能,并且可能会破坏一些正常的网页,因为它可能会破坏主机 JavaScript 代码并删除一些点击操作。
好像不止我有这个问题。
我做了一些研究。 这似乎是这样做的http://stackoverflow.com/a/5887719/96100 (解决方案包括 IE,因此可以通过删除 IE 部分来进一步简化)
这个解决方案似乎涉及对页面 DOM 的内联修改,这让我很不舒服。
世界正在发生什么?
这很难正确完成(或者至少让我满意)。
一个完整的实现必须
跨元素查找(surfingkeys 看起来无法做到;请参阅此处和此处了解其代码)
- 例如。 在此页面上查找并突出显示
class SuppressPrintable
(或者,更难地突出显示lass Supp
)- 注意我们关心的那一行有 HTML
<span class="pl-k">class</span> <span class="pl-en" style="background-color: transparent;">SuppressPrintable</span> <span class="pl-k">extends</span> <span class="pl-e">Mode</span>
- 例如。 在
test<img src="#">test
查找并突出显示testtest
test<img src="#">test
,就像本机查找一样- 要么在
test<input type="text">test
找到并突出显示testtest
test<input type="text">test
(如 Firefox),要么不(如 Chrome)。查找并突出显示直接从页面复制的字符串。 适用两种情况:
- 父母有
white-space: normal
或nowrap
。test string
呈现为test string
,所以我们需要找到它。 (surfingkeys 不能这样做,因为它使用node.data
)- 父母有
white-space: pre
,pre-line
或pre-wrap
。test string
呈现为test string
,所以我们需要找到查找表示空格的元素(例如
<br />
或<p></p>
)。 (冲浪键不能这样做)
- 例如。
Test<br />Test
应该通过搜索Test\nTest
(或者Test\r\nTest
? )- 例如。
<p>Test</p><p>Test</p>
应该通过搜索Test\n\nTest
(或Test\r\n\r\nTest
)找到并突出显示- (可选)在
<input>
s、<textarea>
s、<button>
s 等中查找并突出显示匹配项。这是正确执行的主要麻烦。我们可以使用
innerText
属性来获取页面的文本表示,它告诉我们大多数匹配项(除了——特别是——最后一个要点中提到的那些),以及 Vimium 使用的匹配项。 然而,为了突出显示(甚至创建一个不使用window.find
),我们必须将文本搜索的结果(在innerText
)映射回 DOM 中的范围。我建议的(懒惰)方法将涉及一种穷人的二进制搜索,创建
Range
s ,并使用toString()
映射到innerText
。 我对自己实施这个并不特别感兴趣。
我也对 window.find() 做了一些研究。 它仅突出显示网络上的当前结果,而不突出显示所有结果。 也许多次调用该方法? 对于这个问题,我认为这不是一个好主意。
这个套路怎么样?
在查找模式下,在用户按下回车键之前,对于每个更新的输入只调用 window.find() 一次。
使用后按回车键,调用 window.find() 以显示所有出现的情况。
[ 可能是为了记住输入之前的查找结果位置 ]
window.find()
总是高亮“当前”选择的区域,而没有完美的方法来模拟背景色块(例如,如果一条线拥有它的背景色/图像,那么模拟的背景色将不可见)。
window.find()
总是高亮“当前”选择的区域,而没有完美的方法来模拟背景色块(例如,如果一条线拥有它的背景色/图像,那么模拟的背景色将不可见)。
嗨,让我更清楚地了解我的日常工作。
用户输入a
,调用window.find
直到返回NULL。 收集所有比赛
用户输入ab
,调用window.find
直到返回NULL。 收集所有匹配项,删除以前的
当使用 hit enter
,实际使用的是搜索结果数组。
@Piping window.find()
总是删除所有旧的高亮区域,然后只高亮一个新的,所以实际上没有 JavaScript API 来高亮区域列表。
免责声明:我不再以任何形式处理浏览器扩展,所以我的知识可能已经过时。
用户输入
a
,调用window.find
直到它返回NULL
。 收集所有比赛
用户输入ab
,调用window.find
直到它返回NULL
。 收集所有匹配项,删除以前的
window.find
很可怕,应该尽可能避免
<input>
/ <textarea>
很难很好地获取这些数据,甚至在我们不必担心突出显示其中文本的重要问题之前。当我还是一名贡献者时,我们为计算搜索结果的数量而争论不休,因为在大页面上搜索结果很慢。 使用window.find
慢一个数量级,并且在正则表达式搜索中根本不起作用。 我强烈建议不要将它用于不止执行一次搜索,即便如此,它也应该是最后的手段。
@gdh1995我不打算像你说的那样使用windows.find()
。 它只是find
文本。
@mrmr1993我了解此功能需要更多的计算能力或人力。 但是至少用户应该有一个选择 [option in config] 来使用 vimium 来做到这一点,即使从用户的角度来看它很慢。 无论如何,有时使用 Ctrl-F 有时使用 / 并且/
无法按预期工作(甚至在 vim 中都没有),这有点烦人。
除了哲学上的原因,扩展程序不能只允许这种类型的功能,并将其放入扩展程序设置的“实验性”部分,并带有适当的警告,指出它可能会破坏某些页面,除了哲学原因之外,还有什么其他原因吗? 这似乎是一个受欢迎的请求,因此将它添加到那里是有意义的。 例如,我对扩展程序“选择荧光笔”非常满意,尽管它可能会破坏页面,仅仅是因为实用程序超过了风险; 我认为这同样适用于这里。
+1 在这附近。 :)
我赞同 macintaco 的观点。
我使用 vimium 搜索来替代查找工具,以便我可以在不同的安装中保持键盘快捷键的统一(总是使用 / 来查找内容)。
+1
Firefox 有browser.find.find
和browser.find.highlightResults
。 它似乎不支持正则表达式,但看起来正是这个问题所需要的。
我只想指出,SurfingKeys 通过其搜索功能突出显示页面上的匹配项。 我不知道他们是如何做到的(这似乎是某种叠加)但它“足够好”以至于我现在使用该扩展名。 天啊。
+1 - 希望至少有一个解决方法。
8年... :)
最近又有一个想法:高亮背景色没必要画,我们可以用遮蔽矩形来代替。 因此,我在我自定义的 Vimium Vimium C 中实现了一个简单的版本,它支持Ctrl+J/K
来查找下一个/上一个和Ctrl+Shift+J/K
来在当前可见区域的所有匹配项上闪烁矩形。
最有用的评论
6年后,我仍然希望有这个功能