2011-06-04 68 views
16

可能重複:
Why write <script type=「text/javascript」> when the mime type is set by the server?你真的需要指定類型屬性嗎?

我讀Dive into HTML5而回,並再次剛剛讀它的語義章。我注意到它建議scriptstyle使用type="..."屬性,這是因爲:

  • MIME類型應該由服務器發送,
  • JS和CSS是默認值,
  • 瀏覽器不要」不在乎。

不過,我看它仍然是常見的做法包括兩個scriptstyle標籤type屬性(或者,恐怖,language)。假設服務器已正確配置爲發送正確的MIME類型,是否有理由使用這些而非顯式?

編輯:這是明確的關於HTML5,而不是XHTML。

+0

在dup問題上有一些很好的答案。 – DOK 2011-06-04 19:58:06

+0

是的,我發現*發佈這個後,對不起。 – 2011-06-04 19:58:42

+1

不是一個騙局 - 這是特定於HTML 5的。 – Oded 2011-06-04 20:00:05

回答

20

大多數人都習慣到HTML 4/XHTML之前,在需要這些元素的type屬性。

關於HTML 5,這些確實是可選的,並且規範根據元素給出默認值。

對於script標籤,此默認爲text/javascript

如果語言不是通過「文本/ JavaScript的」所描述的,則該類型屬性必須存在

對於style標籤,此默認爲text/css

該類型屬性的默認值,這是當使用ATTR ibute不在,是「text/css」。

所以,不需要,如你所述。然而,瀏覽器支持和服務器設置不能總是依賴 - 明確是一個好主意,因爲它避免了這些問題。

當然,並非所有的瀏覽器都支持HTML5--那些不會使用早期版本的地方需要該屬性,並且您的javascript/css可能無法在此類瀏覽器中解析,這意味着您最終會向後兼容的簡單解決方案是添加屬性時,在舊版瀏覽器上沒有CSS或JavaScript。

+0

+1可能有趣的是,非HTML5瀏覽器將如何處理'<!DOCTYPE HTML>',這可能會「以某種方式使用」。 – 2011-06-04 20:05:58

+1

@pst特別選擇了「<!DOCTYPE html>」,因爲非HTML5瀏覽器對待它的方式。 – robertc 2011-06-04 21:11:11

+0

@robert確切地說:-)這是一個不能*強制*瀏覽器來理解HTML5 - 只暗示HTML5應該用於支持HTML5的瀏覽器。 – 2011-06-04 22:00:43

0

如果你不使用類型也不會驗證

+1

HTML 5不是必需的。 – Oded 2011-06-04 20:01:03

+1

「假設服務器已正確配置爲發送正確的MIME類型,是否有理由使用這些而不是明確的?」 這個問題並沒有針對html5。問題是爲什麼其他原因人們使用類型標籤。我回答了我使用類型標籤的確切原因。我不讚賞-1 – 2011-06-04 20:01:55

+2

實際上,這個問題涉及到HTML5的一本書,因此它隱含地將其指向HTML5。我現在明確表示。 – 2011-06-04 20:05:59

1

這並不好。在XHTML中,嚴格要求type屬性。儘管瀏覽器可能很寬鬆,但沒有理由違反慣例。

+4

HTML 5不需要它。 – Oded 2011-06-04 20:00:47

+1

@Oded:很少有瀏覽器支持HTML5。目前市場上最流行的瀏覽器IE3-8的支持爲零。 – Ryan 2011-06-04 20:01:50

+4

問題不在於詢問XHTML,而是HTML 5. – Oded 2011-06-04 20:02:45

4

類型屬性可以不需要用於HTML5但是需要用於其它HTML文檔的類型,如HTML 4.01嚴格。我也想說,什麼使代碼/文件爲開發者更清晰真的永遠只能是一件好事。

如果這意味着顯式說明所使用的腳本類型或風格的類型,我會使用它。

+1

HTML 5不是必需的。 – Oded 2011-06-04 20:00:57

+0

我編輯了我的答案,使其更清晰。感謝Oded。 – 2011-06-04 20:02:33

+0

+1(我只看到了更新,這看起來沒問題,即使不是很了不起)。非HTML5瀏覽器會很高興將HTML <4作爲HTML < – 2011-06-04 20:04:47

0

根據W3這是required

即使新的瀏覽器就可以不指定標籤(使用默認值)管理它仍然是更好地與舊的瀏覽器把它留在向後兼容性。

+1

。HTML5不是必需的。 – Oded 2011-06-04 20:01:09

+1

引用有問題的書:「這適用於所有瀏覽器。」 – 2011-06-04 20:06:59

+0

該鏈接適用於HTML4 ^^「REC-html40」。 HTML5草案應該得出不同的結論。 – 2011-06-04 20:07:13

1

確實不要求type屬性爲HTML5,但包括它不會破壞驗證,這樣你就可以從HTML   4或XHTML   1轉換爲HTML5,而且還有你的<script><style>標籤驗證。

<link>標籤也並不需要type屬性(強調):

type屬性給出了MIME類型的鏈接資源的 。 這純粹是 諮詢。值必須是一個有效的 MIME類型。

對於外部資源鏈接,該 類型屬性作爲提示用戶 試劑,使他們能夠避免獲取 資源,他們不支持。如果存在 屬性,則代理必須假定資源爲給定類型的 (即使該 不是有效的MIME類型,例如空的 字符串)。 如果該屬性被省略,則 但外部資源鏈接類型 具有定義的默認類型,那麼 用戶代理必須假定 資源是該類型的。如果UA 不支持給定MIME類型 對於給定的鏈接關係,那麼 的UA不應該獲得資源;如果UA確實支持給定鏈接關係的給定MIME 類型 ,則UA應該在對於外部資源鏈接的 特定類型在適當時間獲得資源 。如果屬性 省略,外部資源 鏈路類型沒有 定義的默認類型,但用戶代理將 獲得的資源,如果該類型是 知和支持,那麼用戶 代理應獲取資源 下的假設,這將是 支持。

用戶代理必須不考慮類型 屬性權威 - 在 獲取資源,用戶代理 不得使用type屬性來確定 其實際類型。只有 實際類型(如在下一個 段落中定義)用於確定 是否應用資源,而不是 上述假定類型。

相關問題