Ich muss einige Wörter auf einer HTML-Seite mit Links ersetzen, d. H. "Verknüpfen" diese Wörter. Ich habe ein Array von Identifier Deskriptoren, wie folgt aus:Die besten Möglichkeiten, um einen Text auf einer HTML-Seite zu transformieren
var symbols_desc = [
{
id: 'id_one',
name: 'struct my_struct_one',
},
{
id: 'id_two',
name: 'my_name_two',
},
/* ... */
]
So in bestimmten Bereichen der HTML-Seite, die ich alle Vorkommen von struct my_struct_one
zu <a href="#id_one">struct my_struct_one</a>
zu transformieren müssen, usw.
Ich bin kein Experte in der Web-Feld verwende ich also wohl den dümmsten Weg: Ich aktualisiere HTML mittels jQuery. So:
$(document).ready(function() {
$(".some-class1, .some-class2").each(function() {
var o = $(this);
symbols_desc.forEach(function(desc){
o.html(
o.html().replace(
new RegExp('(\\b' + desc.name + '\\b)', 'g'),
'<a class="symb-link" href="#' + desc.id + '">$1</a>'
)
);
});
});
});
Es funktioniert, aber es ist inakzeptabel langsam. Es gibt ungefähr 70 Bezeichner, die HTML-Seite ist ungefähr 200 KB und es dauert ungefähr 5 Sekunden.
Angesichts der Komplexität und der Großartigkeit einiger Webanwendungen, die ich von Zeit zu Zeit verwende, bin ich mir sicher, dass es bessere Möglichkeiten geben sollte, diese einfache Aufgabe auszuführen. Ich würde mich freuen, deine Vorschläge zu hören.
Ich habe einige Ideen, die die Geschwindigkeit verbessern würde, aber ich weiß nicht sicher, ohne Prüfung. Würde es Ihnen etwas ausmachen, das HTML- und das Symbol-Array zur Verfügung zu stellen? –
zumindest schlage ich vor, eine Variable aus 'o.html()' zu erstellen, weil Sie eine Funktion in einer Schleife aufrufen. Und noch eins - verwenden Sie eine einzige Klasse für diese Aktion – Undefitied
@EricGuan, hier ist eine ZIP-Datei: http://dmitryfrank.com/usr/tmp/linkify_test.zip, siehe HTML-Datei in 'mongoose/docs/index.html' , und js-Datei: 'static/js/linkify.js' –