Im Chrome-Suchmodus können alle übereinstimmenden Wörter auf der Seite hervorgehoben werden
Kann vimium das auch?
Nicht im Moment. Ich denke, wir würden einen Patch akzeptieren, wenn er keine merkliche Verzögerung verursachen würde.
Dies wäre ein ziemlich großes Unterfangen – vorausgesetzt, wir verwenden weiterhin window.find(), um die Suche durchzuführen, müssten wir es wiederholt aufrufen, um alle Übereinstimmungen anzuzeigen und dann unsere eigene Highlight-Benutzeroberfläche anzuzeigen.
Wenn wir diese Probleme am Ende haben, sollten wir Safaris Streichholzästhetik abreißen, IMO.
+1 für diese Funktion.
+1
Vimium ist großartig! Das ist meiner Meinung nach das einzige fehlende Stück.
+1 für diese Funktion. Eigentlich wollte ich das selbst vorschlagen, aber ich hatte das "Ich kann nicht der Einzige sein"-Gefühl.
Ja!
+1
+1
Wenn dies implementiert wird, wäre es auch schön, alle Übereinstimmungen in der Bildlaufleiste visuell markiert zu sehen, wie es bei Chromium der Fall ist.
+1
Ich habe vor kurzem von Vimium erfahren, ich kann nicht glauben, dass ich das nicht früher installiert habe.
+1
+1
+1
+1
+1
und ich denke, das wäre ein weiteres Killer-Feature
+1
Bitte hör auf, mit nutzlosen +1-Kommentaren zu antworten. es fügt der Diskussion nichts hinzu und wird eine Menge Zeit verschwenden, da sie Benachrichtigungen über Ihren nutzlosen "Beitrag" erhalten. abonnieren Sie ein Ticket über die Funktion "Beobachten".
+1
+1, das Standardchrom verhält sich, indem es alle übereinstimmenden Treffer hervorhebt. Wenn die erneute Implementierung ein Leistungsproblem darstellen würde, ist es dann möglich, die Chrome-Suche direkt aufzurufen?
Ist es möglich, die Suche von Chrome direkt aufzurufen?
Nein.
Um so etwas zu implementieren, wäre etwas wie (ein aktualisiertes) #1081 erforderlich, damit der Browser nicht bei jeder Suche hängen bleibt, was den Entwicklungs-/Wartungsaufwand erheblich erhöht.
Schließen.
So beliebt es auch ist, wir haben nicht wirklich eine Möglichkeit, dies zu implementieren.
(Vimium macht die Hervorhebung derzeit überhaupt nicht. Wir rufen einfach window.find()
.)
4 Jahre...
+1 Dies ist wirklich ein großartiges Feature, wenn es implementiert werden kann.
Ich habe etwas recherchiert. Dies scheint es zu tun http://stackoverflow.com/a/5887719/96100 (die Lösung enthält IE, kann also durch Entfernen des IE-Teils weiter vereinfacht werden)
Aber ich denke, es gibt noch eine weitere Frage - wann und wie man das Highlight entfernt. Wann denke ich, wenn ich die nächste Suche starte oder etwas wie :noh
ausführe; für wie, nehme ich an, dass execCommand('undo')
es tun würde.
Freue mich sehr auf die Funktion.
Dies wird benötigt und ist nicht sicher, ob es sich um ein vimium-spezifisches Feature handelt, aber andere vim-ähnliche Erweiterungen tun dies ( wie zum Beispiel surfingkeys ). Es ist schon fast 5 Jahre her und dieses Feature ist noch nicht da. Was in aller Welt ist los?
Ich habe etwas recherchiert. Dies scheint es zu tun http://stackoverflow.com/a/5887719/96100 (die Lösung enthält IE, kann also durch Entfernen des IE-Teils weiter vereinfacht werden)
Diese Lösung scheint Inline-Änderungen an den DOMs der Seiten zu beinhalten, was mir sehr unangenehm ist.
Was in aller Welt ist los?
Dies ist schwer richtig zu machen (oder zumindest zu meiner Zufriedenheit).
Eine vollständige Implementierung müsste
class SuppressPrintable
(oder, noch schwieriger, markieren Sie lass Supp
) auf dieser Seite<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>
testtest
in test<img src="#">test
, wie dies bei der nativen Suche der Fall isttesttest
in test<input type="text">test
(wie Firefox) oder nicht (wie Chrome).white-space: normal
oder nowrap
. test string
als test string
, also müssen wir das finden. (surfingkeys können dies nicht, da es node.data
)white-space: pre
, pre-line
oder pre-wrap
. test string
als test string
, also müssen wir das finden<br />
oder <p></p>
). (surfingkeys können das nicht)Test<br />Test
sollte gefunden und markiert werden, indem man Test\nTest
sucht ( oder vielleicht Test\r\nTest
? )<p>Test</p><p>Test</p>
sollte gefunden und markiert werden, indem man Test\n\nTest
(oder Test\r\n\r\nTest
) sucht.<input>
s, <textarea>
s, <button>
s usw. Dies ist ein großer Aufwand, um es richtig zu machen.Wir können die Eigenschaft innerText
, um eine Textdarstellung der Seite zu erhalten, die uns die meisten Übereinstimmungen mitteilt (außer – insbesondere – die im letzten Aufzählungspunkt erwähnten) und welche Vimium verwendet. Um jedoch hervorzuheben (oder sogar eine Auswahl zu erstellen, ohne window.find
), müssen wir die Ergebnisse der Textsuche (auf innerText
) wieder auf Bereiche im DOM abbilden.
Mein vorgeschlagener (fauler) Ansatz dafür würde eine Art binäre Suche des armen Mannes beinhalten, die Range
s erzeugt und toString()
, um innerText
zuzuordnen. Ich bin nicht sonderlich daran interessiert, dies selbst umzusetzen.
Dies scheint eine sehr erwünschte Funktion zu sein, aber vielleicht sind alle Anforderungen zusammengenommen zu groß, um sie zu bewältigen. Vielleicht könnte eine kleinere Anzahl von Unterschritten dies leichter zugänglich machen.
+1
6 Jahre später hoffe ich immer noch, diese Funktion zu haben
Die Erweiterung Chrome Regex Search
verwendet eine sehr gefährliche Methode, um die Hervorhebungsfunktion zu implementieren, und kann einige normale Webseiten beschädigen, da sie den JavaScript-Code des Hosts zerstören und einige Klickaktionen entfernen könnte.
Dieses Problem scheint nicht nur ich zu haben.
Ich habe etwas recherchiert. Dies scheint es zu tun http://stackoverflow.com/a/5887719/96100 (die Lösung enthält IE, kann also durch Entfernen des IE-Teils weiter vereinfacht werden)
Diese Lösung scheint Inline-Änderungen an den DOMs der Seiten zu beinhalten, was mir sehr unangenehm ist.
Was in aller Welt ist los?
Dies ist schwer richtig zu machen (oder zumindest zu meiner Zufriedenheit).
Eine vollständige Implementierung müsste
find across elements (was Surfingkeys anscheinend nicht kann; siehe hier und hier für ihren Code)
- z.B. Suchen und markieren Sie
class SuppressPrintable
(oder, noch schwieriger, markieren Sielass Supp
) auf dieser Seite- Beachten Sie, dass die Zeile, die uns wichtig ist, HTML hat
<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>
- z.B. Suchen und markieren Sie
testtest
intest<img src="#">test
, wie dies bei der nativen Suche der Fall ist- entweder suchen und markieren Sie
testtest
intest<input type="text">test
(wie Firefox) oder nicht (wie Chrome).Suchen und markieren Sie eine Zeichenfolge, die direkt von einer Seite kopiert wurde. Es gelten zwei Fälle:
- der Elternteil hat
white-space: normal
odernowrap
.test string
alstest string
, also müssen wir das finden. (surfingkeys können dies nicht, da esnode.data
)- der Elternteil hat
white-space: pre
,pre-line
oderpre-wrap
.test string
alstest string
, also müssen wir das findenSuche über Elemente hinweg, die Leerzeichen darstellen (zB
<br />
oder<p></p>
). (surfingkeys können das nicht)
- z.B.
Test<br />Test
sollte gefunden und markiert werden, indem manTest\nTest
sucht ( oder vielleichtTest\r\nTest
? )- z.B.
<p>Test</p><p>Test</p>
sollte gefunden und markiert werden, indem manTest\n\nTest
(oderTest\r\n\r\nTest
) sucht.- (optional) Suchen und markieren Sie Übereinstimmungen in
<input>
s,<textarea>
s,<button>
s usw. Dies ist ein großer Aufwand, um es richtig zu machen.Wir können die Eigenschaft
innerText
, um eine Textdarstellung der Seite zu erhalten, die uns die meisten Übereinstimmungen mitteilt (außer – insbesondere – die im letzten Aufzählungspunkt erwähnten) und welche Vimium verwendet. Um jedoch hervorzuheben (oder sogar eine Auswahl zu erstellen, ohnewindow.find
), müssen wir die Ergebnisse der Textsuche (aufinnerText
) wieder auf Bereiche im DOM abbilden.Mein vorgeschlagener (fauler) Ansatz dafür würde eine Art binäre Suche des armen Mannes beinhalten, die
Range
s erzeugt undtoString()
, uminnerText
zuzuordnen. Ich bin nicht sonderlich daran interessiert, dies selbst umzusetzen.
Ich recherchiere auch zu window.find(). Es hebt nur das aktuelle Ergebnis im Web hervor, nicht das gesamte Ergebnis. Vielleicht die Methode mehrmals aufrufen? Ich denke, es ist keine gute Idee für dieses Problem.
Wie wäre es mit dieser Routine?
im Suchmodus, bevor Benutzer die Eingabetaste drücken, rufen Sie window.find() nur einmal für jede aktualisierte Eingabe auf.
Drücken Sie nach der Verwendung die Eingabetaste, rufen Sie window.find() auf, um alle Vorkommen anzuzeigen.
[ möglicherweise, um sich die Suchergebnisposition direkt vor der Eingabe zu merken ]
window.find()
hebt immer den "aktuellen" ausgewählten Bereich hervor, während es keine perfekte Methode zum Simulieren des Hintergrundfarbblocks gibt (wenn beispielsweise eine Linie ihre Hintergrundfarbe/-bild besitzt, ist die simulierte Hintergrundfarbe unsichtbar).
window.find()
hebt immer den "aktuellen" ausgewählten Bereich hervor, während es keine perfekte Methode zum Simulieren des Hintergrundfarbblocks gibt (wenn beispielsweise eine Linie ihre Hintergrundfarbe/-bild besitzt, ist die simulierte Hintergrundfarbe unsichtbar).
Hallo, Lassen Sie mich meine Routine genauer beschreiben.
Geben Sie a
, rufen Sie window.find
bis NULL zurückgegeben wird. Sammle alle Spiele
Geben Sie ab
, rufen Sie window.find
bis NULL zurückgegeben wird. sammle alle Spiele, lass die vorherigen fallen
Wenn Sie enter
, verwenden Sie tatsächlich das Suchergebnis-Array.
@Piping window.find()
löscht immer alle alten Hervorhebungsbereiche und
Haftungsausschluss: Ich arbeite in keiner Form mehr an Browsererweiterungen, daher ist mein Wissen wahrscheinlich veraltet.
Geben Sie
a
, rufen Siewindow.find
bisNULL
. Sammle alle Spiele
Geben Sieab
, rufen Siewindow.find
bisNULL
. sammle alle Spiele, lass die vorherigen fallen
window.find
ist schrecklich und sollte nach Möglichkeit vermieden werden
<input>
/ <textarea>
ist schwer, diese Daten gut herauszubekommen, noch bevor wir uns um das nicht triviale Problem des Hervorhebens von Text in ihnen kümmern müssen.Als ich ein Contributor war, haben wir uns darum gestritten, die Anzahl der Suchergebnisse zu zählen, weil die Suche auf großen Seiten so langsam war. Die Verwendung von window.find
war um eine Größenordnung langsamer und funktionierte bei der Suche mit regulären Ausdrücken überhaupt nicht. Ich rate dringend davon ab, es für mehr als eine einzelne Suche zu verwenden, und selbst dann sollte es der letzte Ausweg sein.
@gdh1995 Ich wollte windows.find()
, wie du gesagt hast. Es ist nur find
der Text.
@ mrmr1993 Ich verstehe, dass diese Funktion mehr Rechenleistung oder /
nicht wie erwartet funktioniert (nicht einmal in vim).
Gibt es einen anderen als einen philosophischen Grund, warum die Erweiterung diese Art von Funktion nicht einfach zulassen und in einen "experimentellen" Abschnitt der Einstellungen der Erweiterung stecken kann, mit entsprechenden Warnungen, die darauf hinweisen, dass einige Seiten beschädigt werden können? Dies scheint eine beliebte Anfrage zu sein, die es sinnvoll macht, sie dort hinzuzufügen. Ich war zum Beispiel mit der Erweiterung " Selection Highlighter " sehr zufrieden, obwohl sie Seiten brechen könnte, einfach weil der Nutzen das Risiko überwiegt; Ich denke das gleiche gilt hier.
+1 hier. :)
Ich stimme den Gefühlen von Macintosh zu.
Ich verwende die vimium-Suche als Ersatz für das Find-Tool, damit ich die Tastenkombinationen über verschiedene Installationen hinweg einheitlich halten kann (benutze immer /, um Dinge zu finden).
+1
Firefox hat browser.find.find
und browser.find.highlightResults
. Es scheint Regex nicht zu unterstützen, sieht aber ansonsten genau so aus, wie dieses Problem benötigt würde.
Ich möchte nur anmerken, dass SurfingKeys über seine Suchfunktion Übereinstimmungen auf der Seite hervorhebt. Ich weiß nicht, wie sie das machen (es scheint eine Art Überlagerung zu sein), aber es ist "gut genug", dass ich jetzt stattdessen diese Erweiterung verwende. YMMV.
+1 - wünschte, es gäbe zumindest einen Workaround dafür.
8 Jahre... :)
Kürzlich kam mir eine andere Idee: Es ist nicht notwendig, die Hervorhebungshintergrundfarbe zu zeichnen, und wir können stattdessen Maskierungsrechte verwenden. Daher habe ich eine einfache Version in meinem angepassten Vimium implementiert, Vimium C , und es unterstützt Ctrl+J/K
um nächste/vorherige zu finden und Ctrl+Shift+J/K
um Rechtecke auf allen Übereinstimmungen im aktuell sichtbaren Bereich zu flashen.
Hilfreichster Kommentar
6 Jahre später hoffe ich immer noch, diese Funktion zu haben