我有一個延期的代碼。 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文檔類型 –