2014-01-31 6 views
6

Ich bin eine Zeichenfolge von HTML für meine Seite und ich halte es html-safe außer Skript-Tags. Ich bin mir bewusst, dass Triple-Klammern aus dem HTML-Code entkommen, was sind die Schritte, um Skript-Tags wegzulassen?Interpretieren Sie HTML-Zeichenfolge mit Lenker, aber escape-Skript-Tags

Beispiel

var foo = "<h1>Foo</h1><script>some script that might possibly be in here</script><p>bar</p> 

dann in meinem .hbs:

{{{foo}}} 

Ich möchte die h1 und den Absatz sehen, aber haben Skripte weggelassen.

Vielen Dank im Voraus.

Antwort

5

Sie haben ein paar Optionen:

  1. die Script-Tags entfernen, bevor sie als Kontext in Ihrem Lenker Vorlage übergeben.

  2. Erstellen Sie einen Lenker-Helfer, der anstelle des dreifach geschweiften Klammerausdrucks verwendet wird. Etwas wie folgt aus:

Handlebars.registerHelper('strip-scripts', function(context) { 
     var html = context; 
     // context variable is the HTML you will pass into the helper 
     // Strip the script tags from the html, and return it as a Handlebars.SafeString 
     return new Handlebars.SafeString(html); 
    }); 

Dann ist es wie dies in der Vorlage verwenden:

{{strip-scripts foo}} 

Sie brauchen nicht triple geschweiften Klammern zu verwenden, wenn mit Hilfe des Helfers, weil Ihr Helfer ein zurückgibt SafeString bereits.

Der Helfer kann vorteilhafter sein als die erste Option, da Sie ihn in Ihren Vorlagen wiederverwenden können.

prüfen diese Frage Stackoverflow um Hilfe an, wie das Skript strippen sicher Tags aus: Removing all script tags from html with JS Regular Expression

Wenn Sie diese Server-Seite mit Node.js tun, können Sie so etwas wie Cheerio anstelle von jQuery verwenden.