Ich bin einige einfache gestylten Text als html in einem UIWebView auf iPhone anzeigen. Es ist im Grunde eine Reihe von Absätzen mit der gelegentlichen starken oder betonte Phrase. Zur Laufzeit muss ich Stile auf Bereiche von Text anwenden.
Es gibt einige ähnliche Szenarien, von denen eines die Hervorhebung von Suchergebnissen ist. Wenn der Benutzer nach "etwas" gesucht hat, möchte ich die Hintergrundfarbe hinter den Vorkommen des Wortes ändern und später den ursprünglichen Hintergrund wiederherstellen.
Ist es möglich, mit Javascript Stile auf Textbereiche anzuwenden? Ein wichtiger Teil davon ist auch in der Lage sein, die Stile zu deaktivieren.
Es scheint zwei mögliche Wege zu geben. Einer wäre die Änderung einige html in Objective-C und übergeben es durch Javascript als die neue innerHTML von einigen Container. Der andere wäre, Javascript zu verwenden, um direkt DOM-Knoten zu manipulieren.
Ich könnte html manipulieren, aber das klingt mühsam in Objective-C, also würde ich lieber das DOM manipulieren, wenn das ein vernünftiger Ansatz ist. Ich bin nicht so vertraut mit javascript und DOM, so dass ich nicht weiß, ob es ein vernünftiger Ansatz ist.
Ich habe einige Routinen geschrieben, um zwischen Textbereichen und Knotenbereichen mit Offsets zu übersetzen. Wenn ich also mit dem Textbereich 100-200 beginne und dieser in einem Absatz beginnt und in einem dritten endet, kann ich die Textknoten und die Offsets innerhalb der Knoten ermitteln, die den gegebenen Textbereich darstellen. Ich brauche nur eine Möglichkeit, einen Textknoten an einem Versatz im Text zu teilen. Zurzeit wende ich nur Stile auf die Absätze an, die den Textbereich enthalten.
Ein paar Anmerkungen:
- Bitte nur Javascript, keine externen Frameworks wie Jquery.
- die Änderungen müssen nie auf die Festplatte geschrieben werden.
- die Änderungen sollten rückgängig gemacht oder zumindest entfernt werden können.
- die anzuwendenden Stile bereits in einer css-Datei vorhanden sind.
- es muss auf dem iPhone 3.0 und später funktionieren.
- alle Quelldateien werden mit der Anwendung ausgeliefert.
- bitte ausführlich sein.
Danke für alle Vorschläge.