我有一个延期的代码。 W3验证器说它是无效的,因为它错过了src元素,但实际上它在代码中。 这是代码:代码延迟而不是W3有效
<script defer type="text/javascript">if($(window).width()>1024){document.write("<"+"script src='js/jquery.preloader.js'></"+"script>");}</script>
我该怎么办?
Johanna
我有一个延期的代码。 W3验证器说它是无效的,因为它错过了src元素,但实际上它在代码中。 这是代码:代码延迟而不是W3有效
<script defer type="text/javascript">if($(window).width()>1024){document.write("<"+"script src='js/jquery.preloader.js'></"+"script>");}</script>
我该怎么办?
Johanna
尝试将您的DOCTYPE设置为HTML5。如果不可行,您可能需要编写defer=true
而不是defer
。
您有两个<script>
标签。
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。
W3C HTML Checker(验证器)的维护者在这里。
解决的办法是将脚本内容放入单独的文件中,并使用src
属性来引用该内容。
检查器报告问题中标记代码段的错误,因为HTML规范用于明确声明script
不能具有defer
属性,除非它还具有src
属性。
该规范似乎不再明确规定限制,但我认为这只是一个unintentional regression caused by a later spec change(您的问题有助于赶上,所以,谢谢!)。
因此,我将调查并提出规范修复的拉取请求,然后再更新此答案。
Defer = true给出了错误的值错误。我已经有HTML5的HTML文档类型 –