2011-02-04 52 views
3

在HTML我可以這樣做:在XHTML中無腳本替代?

<noscript><link href="css/stylenojs.css" rel="stylesheet" type="text/css" /></noscript> 

有一些兼容的方式在XHTML過渡或嚴格的文檔這樣做呢?

+0

相關問題:https://stackoverflow.com/questions/17829671/is-it-wise-to-use-the-noscript-tag-for-tracking-visitors-who-have-javascript-dis – Hawken 2014-04-28 22:19:19

回答

3

你給的例子在HTML和XHTML中都是無效的。沒有當前的建議提供了一種方法來包含樣式表,除非腳本被啓用。

一般而言,您應該避免<noscript>。開始與一些作品,然後build on it.

在這種情況下,你可以寫你的樣式表對非JS的客戶,則:

<body> 
<script type="text/javascript">document.body.className += ' js';</script> 

...幷包括針對JS與被啓用額外的規則集:

body.js foo { 
} 

或者,你可以這樣做:

<link href="css/stylenojs.css" rel="stylesheet" type="text/css" id="nojscss" /> 

var nojscss = document.getElementById('nojscss'); 
nojscss.parentNode.removeChild(nojscss); 
+1

其實是什麼理查德寫的是有效的HTML5,因爲沒有腳本和自我關閉標籤都可以,但是,即使XHTML5也不允許

1

當前所選答案具有誤導性。

<noscript>HTML valid以及問題中提供的示例。

W3C says

無腳本元件僅在HTML語法有效,它在XHTML語法沒有 效果。這是因爲它的工作方式是 在啓用腳本時基本上「關閉」分析器,因此元素的內容被視爲純文本,而不是實際的 元素。 XML沒有定義一個執行此操作的機制。

現在,關於XHTML的小dirty secret的是,瀏覽器不是在XML處理XHTML除非記錄在application/xhtml+xml做爲該MIME類型。

如果您的頁面被提供爲正確的XHTML,那麼解決方案可能會將頁面的doctype更改爲HTML5和MIME類型爲text/html