Suche ohne HTML Steuerzeichen zu berücksichtigen

  • Hi,

    ich habe ein kleines Script welches mir in einer HTML Seite den Suchbegriff markiert.

    Allerings habe ich das Problem, dass es auch die HTML Befehle sucht und markiert. Dadurch gerät die Anzeige durcheinander.

    Was müsste ich denn ändern, dass die HTML Commandos nicht mit durchsucht werden ?


    Wenn ich jetzt nach KARL suche ist alles gut

    Suche ich nach UL dann wird das HTML <UL> angezeigt was eigentlich nicht sein sollte.

    Es zerstört die Anzeige.


    Leider bin ich noch Anfängerin.

  • Habs jetzt mit JsFiddle mal online gesetzt, damit man damit spielen kann.

    Dadurch werden dann auch bei der Anzeige die HTML Zeichen rausgenommen und alles erscheint unformatiert.

  • achso. Es soll formatiert bleiben aber trotzdem kein Code angezeigt werden ?

    Dann wird es meines wissens etwas schwerer. Bzw wenn ees nur in den Bereich sein soll wo <ul> und <li> ist dann häte ich nee idee.

    Soll die suche aber auf einer kompletten html Seite laufen dann wird mir das zu schwer.

    Aber in dein Beispiel Code ,in den paar Zeilen könnte man es mit regulären Ausdrücken versuchen ,oder <li> und <ul> ausschliesen ( zb durch repleace oder so ) in der suche .

    Ich muss das mal gerade selber testen ob das geht wie ich das denke

  • mit ihren letzten fiddle geht es mit etwas fummeln auch recht gut.


    Hätte ich auch nicht gedacht das es doch so kompliziert ist den text zu makieren ohne die Formatierung zu zerstören.

    Aber mit Javascript ist ja fast alles möglich

  • Da ich mit JS noch komplett am Anfang stehe würde ich mich freuen wenn du mir dabei etwas unter die Arme greifen könntest.

    Habe da jetzt schon Stunden zugebracht, bekomme es aber irgendwie überhaupt nicht hin.


    Es soll so funktioieren wie in meinem ersten Fiddle nur halt ohne HTML Tags zu berücksichtigen.

  • Ganz so einfach, wie ich dachte, war es nicht, aber ich habe mal eine grobe Demo gemacht. Was noch fehlt ist das Rückgängigmachen wenn man eine erneute Suche startet.

  • Hi,


    vielen Dank für deine tolle Bemühungen. Da ich leider noch nicht ganz damit zurecht kam habe folgenden Code gefunden,

    der für mich funktioniert.

    Siehe https://jsfiddle.net/Conny64/ytesr1j9/1/

  • Also wenn ich mir das fiddle ansehe, wäre das hier das selbe Verhalten, nur deutlich schlanker und IE tauglich:

    CSS
    .marked { background:#cce; color:#fff; }
    .marked.highlight { background:#e00; color:#fff; }


    zum Ausprobieren: https://codepen.io/anon/pen/eXEZZa?editors=1010

  • Auch ein guter Ansatz aber funktioniert leider nicht so ganz wie sie das haben will.

    Wenn man in der Suche ein 'a' oder '<' ein tippt wird das auch angezeigt.

    Auch wenn man da noch <span> und <p> mit class="" reinmacht wird das auch markiert.

    Das wollte sie ja gerade nicht und die Formatierung soll so bleiben wie sie ist , also mit Zeilenumbruch und so weiter.


    Das funktioniert,

    https://basti1012.bplaced.net/…rdner=html-seminar&id=351


    genauso wie sie es eigentlich wollte, doch ich finde das ist eine Pfusch-Lösung weil jede negative Auswirkung

    mit einem Gegencode ('hole(), focus() ) ausgeglichen wird.

  • Wenn man in der Suche ein 'a' oder '<' ein tippt wird das auch angezeigt.

    Auch wenn man da noch <span> und <p> mit class="" rein macht wird das auch makiert.

    Naja, ich habe wenig Lust, da noch rumzufeilen, aber ich bin mir ziemlich sicher, dass das mit wenig Modifikation an dem RegEx-Pattern und/oder ein zwei Zeilen mehr lösbar ist. Bleibt dann immer noch übersichtlicher und deutlich kompakter.


    Das wolltw sie ja gerade nicht und die Formatierung soll so bleiben wie sie ist , also mit Zeilenumbruch und so weiter.

    An welcher Stelle passiert was mit Zeilenumbrüchen?

  • wenn du zb ein <p> mit background:color rein machst und dann "<" in der suche eintippst ,ist die ganze formatierung weg.

    Das p macht keinen Absatz und das background:color geht auch nicht weg.


    Aber wie du schon sagtest, wollte ich das am Anfang auch mit regex versuchen, doch das ist ein Thema was ich noch gar nicht behersche.

    Wenn man mit Regex den ganzen Code ausschließen kann beim suchen und markieren, dürfte die Formatierung ja eigentlich nicht mehr zerschossen werden oder ?


    Das hauptproblem beim zerschießen der Formatierung ist ja das man das gefundene mit einen <span> umgibt .

    Wenn er dann ein "la" makieren muss würde das

    Code
    <p class="test">lampe</p>

    ja dann so aussehen

    Code
    <p c<span class="mark">$s</span>ss="test"><span class="mark">$s</span>mpe</p>

    Also müsste man doch theoretisch nur das makieren innerhalb der < > dieser Zeichen verbieten. Oder sehe ich das jetzt Falsch ?=??

  • Nö, siehst Du eigentlich richtig. Ein wenig rumspielen mit der Variante muss man wohl.

    Den Weg über den designMode finde ich grundlegend zwar auch charmant, aber Du schließt schon mal bei der Verwendung von find() den IE komplett aus ( inkl. Edge ). Natürlich gibt es dazu wieder ein Polyfill, aber das bläht es am Ende nur unnütz auf, weil es M$ wieder mal anders macht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!