2016-07-10 42 views
1

我有一个延期的代码。 W3验证器说它是无效的,因为它错过了src元素,但实际上它在代码中。 这是代码:代码延迟而不是W3有效

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

我该怎么办?

Johanna

回答

-1

尝试将您的DOCTYPE设置为HTML5。如果不可行,您可能需要编写defer=true而不是defer

+0

Defer = true给出了错误的值错误。我已经有HTML5的HTML文档类型 –

1

您有两个<script>标签。

  • 其中一个是在HTML源其使用document.write
  • 产生
  • 一个。

的HTML一个看起来是这样的:

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

它没有src属性。这就是你得到错误的原因。那里不能有defer属性。

由JavaScript生成的一个看起来是这样的:

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

它有一个src属性,并没有一个defer属性。您可以在此处添加defer属性。

它也是JavaScript,所以不会被验证器视为HTML。

1

W3C HTML Checker(验证器)的维护者在这里。

解决的办法是将脚本内容放入单独的文件中,并使用src属性来引用该内容。

检查器报告问题中标记代码段的错误,因为HTML规范用于明确声明script不能具有defer属性,除非它还具有src属性。

该规范似乎不再明确规定限制,但我认为这只是一个unintentional regression caused by a later spec change(您的问题有助于赶上,所以,谢谢!)。

因此,我将调查并提出规范修复的拉取请求,然后再更新此答案。