4

我正在開發不支持IE6或IE7的Javascript驅動的交互式工具。如果<noscript>或<! - [if lte IE 7]>符合條件註釋,但沒有重複內容,則顯示內容?

如果有人使用舊的IE瀏覽器,或者使用JavaScript禁用的瀏覽器,我們給他們一些簡單的靜態內容作爲後備:純文本和圖像。

可以只是通過複製做到這一點靜態內容,在<noscript>塊中的一個副本,並在有條件的評論,像這樣的副本...

<!--[if lte IE 7]> 
<div id="some-id"> 
<p> Some content </p> 
<img src="url.com" alt="Screenshot of awesome tool" title="This is what you're missing" /> 
<p> Some more content </p> 
<div id="some-more"> ... etc ... </div> 
</div> 
<![endif]--> 

<noscript><![if !(lte IE 7)]> 
<div id="some-id"> 
<p> Some content </p> 
<img src="url.com" alt="Screenshot of awesome tool" title="This is what you're missing" /> 
<p> Some more content </p> 
<div id="some-more"> ... etc ... </div> 
</div> 
<![endif]></noscript> 

...但如果可能的話,最好避免重複這樣的內容。沒有不必要的重量,更容易更新,沒有任何搜索引擎機器人將隱藏的重複內容解釋爲關鍵字垃圾郵件等的風險。此外,避免重複只是一種很好的做法。

(另外,我們可能會失去在<noscript>標籤可怕<![if !(lte IE7)]> ......它的存在的情況下,有人IE6 IE7或關閉了Javascript,所以他們沒有看到的內容兩次......我聽說過一些企業的系統誰擁有傳統的定製系統依賴於舊版本的IE這樣做是一件可怕的方式讓老IE稍微更安全...)

如果我包裹在<noscript>有條件的內容,或VICA相反,它將是'AND'邏輯 - 只有當兩個條件都滿足時纔會顯示(禁用Javascript的IE6/7)。

有沒有什麼辦法讓它通過「OR」邏輯工作 - 所以有一個內容塊,而內容的一個塊顯示,如果沒有使用Javascript,如果IE 7相比較少的版本?或者一些聰明的簡單可靠的方式使用Javascript來切換<noscript>如果瀏覽器啓用了Javascript並且是IE的舊版本(理想情況下,沒有等待文檔準備就緒)?

因爲我已經在使用條件註釋,所以嚴格標準合規性並不是什麼大問題,例如,如果有一種方法涉及<noscript>標籤的屬性中的腳本,那就沒問題。 jQuery語法也很好。

一個簡單,乾淨的方式爲舊IE或noscript瀏覽器提供一個後備內容塊將是一件非常有用的事情。

+2

你爲什麼不把你的「無腳本」內容爲''

+0

@pebbo我想這可能是唯一的邏輯上可能的方式,假設我沒有意識到的HTML技巧(我在發佈後編輯了類似的東西) - 但我不確定最好,最乾淨,最可靠的方式來'激活'與JS的'

+0

我覺得如果你在javascript中使用'$('body')。html($('noscript')。html())''來做一些事情,那麼IE6/7就會完全正常。 – pebbo

回答

6

我想我已經破解了,而不需要任何JavaScript,idley瀏覽到this question其中有一個答案展示了<!--[if !(IE)]><!--> Anyone but IE <!--<![endif]-->招後(並且,只使用合法的HTML!):

<!--[if gt IE 7)]><!--> <noscript> <!--<![endif]--> 
<div> Content here </div> 
<!--[if gt IE 7)]><!--> </noscript> <!--<![endif]--> 

NoScript的標籤,因此無腳本條件,只有在它不是舊的IE時才被讀取。因此,無論javscript是否處於活動狀態,舊IE都會顯示內容,而非老版本 - IE只在滿足無標記條件時才顯示內容。


澄清...

非IE瀏覽器略過意見,閱讀它:

<!-- blah blah --> <noscript> <!-- blah blah --> 
<div> Content here </div> 
<!-- blah blah --> </noscript> <!-- blah blah --> 

IE 8+看到了條件註釋,符合標準,並讀取一切。這立即關閉評論,並顯示<noscript>標籤:

<!-- --> <noscript> <!-- --> 
<div> Content here </div> 
<!-- --> </noscript> <!-- --> 

舊IE看到了條件註釋,失敗的標準,直到遇到這樣跳過一切[ENDIF]。由於沒有<noscipt>標籤,它總是顯示備選方案的內容:

<!--[STOP READING]...[START READING]--> 
<div> Content here </div> 
<!--[STOP READING]...[START READING]--> 
+1

使用'gt'可能比'!'讀起來更容易 – ryan

+0

@ryan好點! – user568458

+1

除此之外,語法高亮功能在展示這些條件註釋對非IE瀏覽器的影響方面做得相當不錯。 – BoltClock