2016-07-10 12 views
1

Ich habe einen Code mit Defer darin. Der W3-Validator sagt, dass er nicht gültig ist, weil er das src-Element verfehlt, aber tatsächlich ist es im Code. Dies ist der Code:Code verzögern nicht w3 gültig

<script defer type="text/javascript">if($(window).width()>1024){document.write("<"+"script src='js/jquery.preloader.js'></"+"script>");}</script> 

Was kann ich tun?

Johanna

Antwort

-1

Versuchen Sie, Ihre DOCTYPE auf HTML5 zu setzen. Wenn nicht machbar, müssen Sie wahrscheinlich defer=true anstelle von defer schreiben.

+0

Defer = true gibt einen schlechten Wert Fehler. Und ich habe bereits den HTML-Doctype für html5 –

1

Sie haben zwei <script> Tags.

  • Eine, die in der HTML-Quelle ist
  • Eine, die document.write mit erzeugt wird.

Das HTML sieht wie folgt aus:

<script defer type="text/javascript">…</script> 

Es hat keine src Attribut. Deshalb erhalten Sie den Fehler. Sie können dort kein defer Attribut haben.

Der eine von JavaScript generiert sieht wie folgt aus:

if ($(window).width()>1024){ 
    document.write("<"+"script src='js/jquery.preloader.js'></"+"script>"); 
} 

Es ein src Attribut hat und keinen defer Attribut. Sie könnten hier ein defer Attribut hinzufügen.

Es ist auch JavaScript so wird nicht als HTML durch den Validator sowieso behandelt werden.

1

Betreuer des W3C HTML Checker (Validator) hier.

Die Lösung besteht darin, den Inhalt des Skripts in eine separate Datei zu stellen und das src-Attribut zu verwenden, um darauf zu verweisen.

Der Checker meldet einen Fehler für den Markup-Schnipsel in der Frage, da die HTML-Spezifikation verwendet, ausdrücklich zu erwähnen, dass die script keine defer Attribut haben kann, wenn es auch ein src Attribut hat.

Die Spezifikation scheint nicht mehr explizit diese Einschränkung, aber ich denke, das ist nur eine unintentional regression caused by a later spec change (die Ihre Frage geholfen hat zu fangen-so, danke!).

Also werde ich untersuchen und eine Pull-Anfrage für die Spezifikation zu beheben und dann diese Antwort später aktualisieren.