Sto recuperando alcuni dati testuali utilizzando JSON, questi dati includono testo formattato con interruzioni di riga. Mi piacerebbe molto rendere questi linebreak all'utente.Come rendere i linebreak come tag <br> con Aurelia
Domanda: Qual è il "corretto"/"consigliato" approccio per raggiungere questo obiettivo?
opzioni che ho provato:
- Rilegatura normalmente:
<p>${myText}</p>
: non svolge linebreaks - Utilizzando
<pre>
:<p><pre>${myText}></pre></p>
: Renders linebreaks, ma hanno tutti i problemi noti e amati con lunghi<pre>
testo, come orizzontale scorrendo alcuni browser e rompendo in modo subottimale. - Binding normalmente utilizzando un ValueConverter che sostituisce linebreaks con
<br>
tags:<p>${myText | textFormat}</p>
export class TextFormatValueConverter {
toView(value) {
return value.replace(new RegExp('\r?\n','g'), '<br>');
}
}
Ciò rende <br>
tag, ma il legante Aurelia sfugge i tag e mostra loro testo letterale all'utente. * Binding utilizzando il convertitore sopra e innerHTML: <p innerHTML.bind="myText | textFormat"></p>
: Rende bene, ma sono preoccupato che potrebbe essere vulnerabile agli exploit, in quanto i testi provengono da un sistema legacy che non esegue alcun sanitation di input per quanto riguarda l'utilizzo per il web.
Che dire [disinfettare-html] (https://github.com/aurelia/templating-resources/blob/master/src/ sanitize-html.js) convertitore? – dfsq
Grazie :) Non lo sapevo. così una possibile soluzione sarebbe quella di passare attraverso il disinfettante, o semplicemente estendere il mio convertitore per includere servizi igienico-sanitari. Credo che alcuni servizi igienico-sanitari siano inclusi nel binding innerHtml (guardando il codice di te linkato sopra, sembra che siano solo degli script che vengono fermati qui e credo che il innerHtml protegga da quello di default (potrebbe essere sbagliato però). Non ancora sufficientemente informato da dire se proteggere dai tag script è sufficiente o se occorre prendere in considerazione una maggiore protezione .. – Vidar
Si prega di consultare ["Le domande dovrebbero includere" tag "nei loro titoli?"] (http: //meta.stackexchange. it/questions/19190/should-questions-include-tags-in-their-titles), dove il consenso è "no, non dovrebbero"! –