2016-02-20 14 views
5

Sto provando a convalidare la mia pagina come HTML 5 (W3c). E ho il seguente errore: L'elemento "img" non è permesso qui (come figlio dell'elemento "noscript"). L'elemento "noscript", quando un figlio di "head", deve contenere solo i seguenti elementi figlio: "link", "style" e "meta".Convalida errori W3C HTML5 img noscript facebook.com

Sul posto https://developers.facebook.com/docs/ads-for-websites/conversion-pixel-code-migration raccomandazione per il mio codice:. "Copia e incolla il frammento di aggiornamento codice tra <head> e </head>, nel codice HTML del tuo sito web in cui si desidera monitorare le conversioni, ad esempio, per monitorare le registrazioni, posizionare il codice sulla tua pagina web 'registrazione completata'. "

si prega di vedere il codice sorgente:

<head> 
<script type="text/javascript"> 
var fb_param = {}; 
fb_param.pixel_id = '1234567890'; 
fb_param.value = '10.00'; 
fb_param.currency = 'USD'; 
(function(){ 
    var fpw = document.createElement('script'); 
    fpw.async = true; 
    fpw.src = '//connect.facebook.net/en_US/fp.js'; 
    var ref = document.getElementsByTagName('script')[0]; 
    ref.parentNode.insertBefore(fpw, ref); 
})(); 
</script> 
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/offsite_event.php?id=1234567890&value=10.00&currency=USD" /></noscript> 
</head> 

E 'possibile modificare questo codice e superare la convalida (nella sezione head)? specifica HTML5

+2

Non è possibile inserire il contenuto nella testa. Tuttavia, puoi spostare il noscript sul corpo. – Aplet123

risposta

3

del W3C definisce il modello di contenuto di un noscript element nell'elemento head in questo modo:

[…] in any order, zero or more link elements, zero or more style elements, and zero or more meta elements.

Come si può vedere, non può contenere altro che link/style/meta elementi. Quindi no, non è possibile modificare nulla per consentire un img all'interno di un elemento noscript all'interno dell'elemento head.

Ma si può avere un img all'interno di noscript se si inserisce l'elemento noscript nel body, come il modello di contenuto è in questo caso:

transparent, but there must be no noscript element descendants.

trasparente significa che ha lo stesso modello di contenuto come elemento principale. Ad esempio, se lo noscript si trova all'interno di uno div, potrebbe contenere qualcosa che un div potrebbe contenere (ad eccezione di un altro noscript).

-1

Come @ Aplet123 e @unor, è possibile spostare l'elemento <noscript> sul corpo. L'ho fatto sulle mie pagine e sembra funzionare senza effetti negativi.

Per verificare, ho utilizzato l'helper Pixel di Facebook da Chrome e si comporta esattamente come la versione precedente della mia pagina con l'elemento <noscript> nella testa come per il codice di esempio di Facebook.

Infine, per mantenere felice il validatore HTML, sarà inoltre necessario aggiungere uno alt="Facebook pixel" o simile all'elemento <img>.

Problemi correlati