2016-07-10 25 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(您的問題有助於趕上,所以,謝謝!)。

因此,我將調查並提出規範修復的拉取請求,然後再更新此答案。