Devo evitare le virgolette all'interno di un valore di attributo html? Quali personaggi sono ammessi?Quali valori posso inserire in un valore di attributo HTML?
È valido?
<span title="This is a 'good' title.">Hi</span>
Devo evitare le virgolette all'interno di un valore di attributo html? Quali personaggi sono ammessi?Quali valori posso inserire in un valore di attributo HTML?
È valido?
<span title="This is a 'good' title.">Hi</span>
Se il valore di attributo è citato (inizia e termina con virgolette "
), quindi sono consentiti tutti i caratteri tranne le virgolette e le e commerciali, che devono essere indicati comerispettivamentee &
(o l'equivalente riferimenti di entità numeriche, "
e &
)
È possibile anche usare le virgolette singole attorno ad un valore di attributo. Se si esegue questa operazione, è possibile utilizzare le doppie virgolette letterali all'interno dell'attributo: <span title='This is a "good" title.'>...</span>
. Per evitare le virgolette singole all'interno di tale valore di attributo, è necessario utilizzare il riferimento numerico di entità '
poiché alcuni browser non supportano l'entità denominata, '
(che era not defined in HTML 4.01).
Inoltre, è anche possibile creare attributi senza virgolette, ma che limita il set di caratteri che si possono avere al suo interno molto più in là, non consentire l'uso di spazi, =
, '
, "
, <
, >
, `
nell'attributo .
Vedere the HTML5 spec per ulteriori dettagli.
Qual è il motivo per cui si richiede di uscire dalla e commerciale '' Cosa può rappresentare? –
Ah, ok, è perché la stessa e commerciale sarebbe stata analizzata come entità altrimenti. –
Il segno e commerciale è un carattere valido in un valore di attributo. La specifica proibisce "ambiguo e commerciale" che è la combinazione di (e commerciale + caratteri alfanumerici + punto e virgola) dove non corrisponde a nessuno dei riferimenti nominati. '' - valido '' - non valido – Semra
Il valore può essere qualsiasi cosa, ma si dovrebbe sfuggire citazioni ("
, '
), delimitatori di tag (<
, >
) e commerciali (&
).
Questo non sembra corretto (vedi il link alle specifiche nelle altre risposte). – Christophe
non sembra non consentire lo <, > ecc. La specifica non consente solo e commerciali. – arviman
Ciò è valido. Tuttavia, se si dovesse mettere le virgolette dentro, si dovrà fuggire con "
come questo:
<span title="This is a "good" title.">Hi</span>
No, non hanno bisogno di fuggire virgolette singole all'interno di doppi apici.
Questa pagina specifica gli attributi validi di un tag span:
http://www.w3.org/TR/html401/struct/global.html#edef-SPAN
Questa pagina specifica caratteri validi consentiti nel title:
Sì, va bene. Il problema sarebbe quando provi a inserire un doppio preventivo all'interno di un attributo. in questo modo:
<span title="This is a "bad" title.">Hi</span>
Si può ovviare a questo utilizzando entità HTML in questo modo:
<span title="This is a "good" title">Hi</span>
Ecco una funzione di validazione usando un'espressione regolare in base alla risposta di Brian Campbell, per caso peggiore di un non quotate attributo.
validator: function (val) {
if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},
Partenza title sulle più recenti specifiche HTML5: http://dev.w3.org/html5/spec/Overview.html#the-title-attribute Credo che l'attributo title utilizza il tipo CDATA che è definito qui: http://www.w3.org/TR/html401/types.html # type-cdata –
Chiede solo e commerciale: http://stackoverflow.com/questions/3705591/do-i-encode-ampersands-in-a-href (purtroppo non è venuto prima, quindi non fare il duplicato ...) –