我想包括JavaScript文件只有在瀏覽器不是IE瀏覽器。有沒有辦法做到這一點?根據瀏覽器包含不同的JavaScript文件?
回答
你可以用IE的conditional comments做到這一點,就像這樣:
<![if !IE]>
<script src="your-non-IE-script.js" type="text/javascript"></script>
<![endif]>
注意的是,以上是由非IE瀏覽器處理,因爲條件是不 HTML註釋,但處理指令,所以在中間的位由非IE瀏覽器處理。 IE看到條件和跳過內容,因爲它明白有條件的手段「不是你,一起移動。」
如果你只想對IE做一些,您使用的形式很相似,但使用HTML註釋,而不是(與--
),因爲這是你可以依靠其他瀏覽器忽略了內容的唯一途徑。 IE知道要注意他們,即使他們是評論。更多關於上面的鏈接。
注意,有關於IE瀏覽器(而不是其他瀏覽器),當您使用條件的意見(他們暫時阻止其他資源的下載)頁面加載速度寓意,更在這裏:http://www.phpied.com/conditional-comments-block-downloads/
更新2013 :IE10 +不再支持條件註釋。
我只想指出,這不是一個處理指令。這只是專有的Microsoft語法。處理指令的形式是'<?processing-instruction-name-here ... data here ...?>'。 – 2010-09-10 23:27:43
@Eli:果然(http://en.wikipedia.org/wiki/Processing_Instruction)。哇,我一直以爲他們正在處理指令。謝謝! – 2010-09-11 13:41:31
你可以做到這一點完全不同的方式使用條件註釋[ONLY,如果IE的東西插入],也許這將幫助你。
你也可以使用IE的條件註釋,只在* not * IE時插入東西。對真的。 – 2010-09-10 22:23:45
很高興知道 - 謝謝! – 2010-09-10 22:24:53
您可以使用IE conditional comment。
要得到的東西,會比IE等瀏覽器中顯示,但不是在IE瀏覽器,並且仍然會驗證,你可以使用:
<!--[if !IE]>-->
<script src="..."></script>
<!--<![endif]-->
如何扭轉呢?如果這是一個可能性,你可以使用IE的條件註釋:http://www.quirksmode.org/css/condcom.html
否則你可以嗅出用戶代理,但這個被認爲是「不好的做法」。
你不必轉過身來,IE的條件註釋可以用於定位非IE瀏覽器(是的,真的)。 – 2010-09-10 22:24:11
首先,注意:這不是一個很好的做法。如果可能的話,您應該努力以瀏覽器不可知的方式設計您的網站,以便它可以在所有瀏覽器中始終如一地工作,而無需維護針對特定瀏覽器問題的黑客和技巧。
但如果你真的想這樣做,這是最簡單的包含文件只有在瀏覽器爲 IE:(包括僅當瀏覽器是IE6或更小的文件)
<!--[if lt IE 7]>
<script type="text/javascript" src="global.js"></script>
<![endif]-->
但是,如果你真的想圍繞做它的其他方式,這裏有一些選擇:
- 使用服務器端的瀏覽器嗅探來處理瀏覽器在繪製頁面之前。也就是說,使用服務器端語言(Java,PHP等)來確定瀏覽器是什麼(通常通過用戶代理字符串),然後以這種方式有條件地包含您的JS文件。 (例如,您可以使用PHP的
get_browser
函數。) - 如果瀏覽器不是IE,則使用客戶端瀏覽器嗅探來調用另一個JS文件。您可以使用JavaScript本身來確定瀏覽器,如果瀏覽器不是IE,則可以在頁面中插入另一個JS文件。 (例如,您可以使用jQuery的
browser
函數。) - T.J.'s answer提供了一種使用I.E.的條件註釋來執行此操作的方法。
是的,對於IE條件腳本就是你的答案:
<!--[if lt IE 7 ]>
<script src="/js/my_ie_script.js"></script>
<![endif]-->
這將做OP的要求的準相反。 – 2010-09-10 22:32:37
當然,你是對的。我怎麼會錯過OP的問題中的'不'。晚了! – mkoistinen 2010-09-10 23:06:48
它鮮爲人知比有條件的意見,但我想我會提到,你也可以使用一個叫做條件編譯一個IE瀏覽器的功能 - 見http://msdn.microsoft.com/en-us/library/7kx09ct1%28VS.80%29.aspx
這個例子來自於他們的文檔:
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
document.write("JScript Version 5.0 or better.<BR>");
@else @*/
document.write("You need a more recent script engine.<BR>");
/*@end @*/
- 1. 瀏覽器如何包含JavaScript文件?
- 2. 根據瀏覽器引用Yii中的不同js文件
- 3. 如何根據構建配置包含不同的JavaScript文件?
- 4. JavaScript禁用時包含瀏覽器特定的CSS文件?
- 5. 在縮小文件中包含哪些JavaScript(UMD,CommonJS,瀏覽器)
- 6. 瀏覽器無法識別包含外部javascript/jquery文件
- 7. 根據瀏覽器
- 8. 包含的文件PHP不會出現在瀏覽器中
- 9. FatalExecutionEngineError包含web瀏覽器
- 10. 不同瀏覽器的CSS文件
- 11. 如何在meteor.js包中包含用於IE8瀏覽器的JavaScript文件?
- 12. 文件加載從瀏覽器到瀏覽器不同
- 13. 根據用戶的瀏覽器版本提供不同版本的文件
- 14. 根據瀏覽器的不同,Asp.net控件看起來有所不同
- 15. 在瀏覽器端XSLT中包含不同的XSLT
- 16. 根據語言環境在Jekyll中包含不同的文件
- 17. JAR不包含根文件
- 18. 讓IE和Chrome瀏覽器加載不同的javascript文件
- 19. 瀏覽器同步不看文件
- 20. 不同瀏覽器的javascript函數
- 21. 字體(根據瀏覽器)
- 22. jQuery - blockUI()根據瀏覽器的行爲不同
- 23. 根據瀏覽器顯示在不同地方的圖像
- 24. 根據瀏覽器加載不同版本的jquery
- 25. PHP:根據瀏覽器提供不同的圖像?
- 26. 根據瀏覽器寬度顯示不同的Adsense廣告
- 27. 瀏覽器緩存深度包含的模板文件嗎?
- 28. 根據asyntask結果更新不同片段的文字瀏覽
- 29. 如何根據瀏覽器有條件地運行Javascript?
- 30. 不同瀏覽器給出不同結果的文件列表
你想只有JavaScript用來做這做你也使用服務器端語言嗎? – 2010-09-10 22:18:37