• User Attivo

    W3C validator legge codice che non dovrebbe essere generato

    Scrivo qui la mia (in)esperienza odierna, sperando che qualcuno non la trovi così strana così come la ritengo io... 😞

    Ho installato il plugin wikiovote (dopo averlo corretto, visto che generava vari errori di codice xhtml - la versione "parzialmente"(1) corretta l'allego al post, se può servire; il nome originale del file è wikiovote.php) su Wordpress; permette la votazione e la visualizzazione del voto per ogni articolo su Wikio.

    Nonostante queste correzioni, le pagine riportano due strani errori XHTML:

    Line 289, Column 5: character "&" is the first character of a delimiter but occurred as data.if(n && !isNaN(parseInt(n.innerHTML))){n.innerHTML=parseInt(n.innerHTML)+1};
    This message may appear in several cases:

    • You tried to include the "<" character in your page: you should escape it as "<"
    • You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&", which is always safe.
    • Another possibility is that you forgot to close quotes in a previous tag.(l'altro è identico, è riferito al secondo ampersand).

    A parte il fatto che quello è codice javascript, la cosa più strana è che quel codice javascript dovrebbe essere restituito in output dall'interno di un IF, in cui non si entra (ci si entra solo se l'articolo non è stato mai votato - non come in quel caso):

                if($wikioAllowVote > 0 && $bVoted==0){
    
                    //echo "<span><div></div></span>";
                    echo "\nvar t=top.document;";
    
                    echo "\nif(!wikiovoted){var n=t.getElementById('wikionote');var a=t.getElementById('wikioaction');";
    
                    echo "\nif(n && !isNaN(parseInt(n.innerHTML))){n.innerHTML=parseInt(n.innerHTML)+1};";
                    echo "\nif(a){a.innerHTML='$wikioPattern2'};";
    
                    echo "\n}";
    
                    echo "\nwikiovoted=true;"; //fine echo
    
                }
    
                echo "}";
    
                echo "</script>";
    ```Infatti, se si va a cercare nel codice html dell'articolo restituito dal server, la stringa che genera l'errore non è presente (se si fa la validazione usando il "direct input", infatti, viene validato tranquillamente).
    
    E' un problema del codice, di qualche impostazione sbagliata del server (Netsons), un bug del validatore o che altro?
    
    (1) C'è ancora un bug (al momento non ho risolto perché non l'ho usato nella visualizzazione "ad archivi"): ad ogni box di voto inserito viene assegnato sempre lo stesso ID. Pertanto, al momento, si può utilizzare solo nella visualizzazione dell'articolo singolo (non si può mettere in un loop, altrimenti si hanno più oggetti con ID uguale).

  • User Attivo

    A nessuno è mai capitato niente del genere? 😞
    Riepilogo (magari nel primo post ho fatto confusione)

    Se faccio la validazione passando passando la URL al validatore... ottengo errori;

    se valido il codice HTML (copiandolo da Visualizza > Codice di Firefox su "Direct input" del validatore) il codice viene ritenuto corretto...

    (scusate l'up...)


  • User Attivo

    Ho risolto 🙂 Il problema era che il codice javascript generato dal plugin non aggiungeva, dentro <script> ... </script>, i tag di commento <!--// ... //-->
    Adesso il validatore non si lamenta più 😄