IE中jscript/javascript的條件編譯
作者:JavaScript Kit 譯者:子烏(Sheneyan) 翻譯日期:2006-02-12 英文原文:Conditional Compilation of JScript/ JavaScript in IE 版權(quán):翻譯未經(jīng)過javascript kit同意,我只對我所翻譯的中文部分負責。版權(quán)歸原作者所有。
子烏注:如同以前的文章一樣,我只能按照我對文章的理解翻譯出來,但是我自己水平實在有限,很多地方可能存在對原文的誤解甚至是誤會,有可能的話還是讀一讀原文。
條件編譯概述
在IE中,有一個鮮為人知的功能叫做條件編譯(conditional compilation)。自從IE4開始支持這個功能,它由于在一些Ajax相關(guān)的javascript腳本中出現(xiàn)而受到一些關(guān)注。條件編譯作為一種獨立形式的對象判斷,使得IE可以根據(jù)預(yù)定義或用戶定義的條件來決定你的jscript或javascript代碼特定部分是否編譯。也可以把它看成是你的代碼的條件注釋(contional comments,很快會翻譯這篇文章),使你的代碼能夠在非IE瀏覽上也順利運行。
語法概述
通過在你的腳本中使用@cc_on來激活條件編譯,或者直接使用@if或者@set等等作為CC邏輯中一部分的句子來激活它。這里是一個示范例子:
<script type="text/javascript">
/*@cc_on document.write("JScript 版本: " + @_jscript_version + ".<br>"); /*@if (@_jscript_version >= 5) document.write("JScript 版本 5.0+.<br \/>"); document.write("只有當瀏覽器支持JScript5+的時候你才能看到這些文字.<br>"); @else @*/ document.write("當你使用其他瀏覽器(比如: Firefox, IE 4.x 之類)的時候看到這行文字<br>"); /*@end @*/
</script>
例子:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
如果你使用IE(任何版本),你應(yīng)該能夠看到第一個document.write()的輸出,如果是IE5+,接下來的兩個document.write()你也能夠看見(因為從IE5開始支持JScript 5)。最后一個document.write()方法是為了其他非IE5+瀏覽器服務(wù)的,無論是Firefox,opera,IE4,或者什么別的。條件編譯依賴于類似在條件注釋中使用的注釋標簽,以確保它在所有瀏覽器中都能工作順暢。
當使用條件編譯的時候,最好先通過@cc_on語句來激活它,只有這樣你才能在你的腳本中包含注釋標簽以保證瀏覽器兼容,、就好像上面例子中所顯示的那樣。(子烏注:這句英文我翻譯的不是很順...看起來似乎與上面的句子矛盾)
@if, @elif, @else,@end 語句
在這個奇怪的開場白之后,這里是一些用于條件便于的條件語句:
@if @elif @else @end
現(xiàn)在讓我們看一些“古怪”的例子。
if else 邏輯 (排除IE外的瀏覽器)
/*@cc_on @if (@_win32) document.write("操作系統(tǒng)是32位windows。瀏覽器是IE。"); @else document.write("操作系統(tǒng)不是32位windows。瀏覽器是IE。"); @end @*/
這是一段完整的腳本,只被ie瀏覽器所識別并忽略其他所有瀏覽器,這段腳本在不同的操作系統(tǒng)上將顯示不同的內(nèi)容。對比一下下面這個例子……
if else 邏輯2 (包含其他瀏覽器)
/*@cc_on /*@if (@_win32) document.write("操作系統(tǒng)是32位windows。瀏覽器是IE。"); @else @*/ document.write("瀏覽器不是IE (如: Firefox)或者瀏覽器不是在32位windows下的IE。"); /*@end @*/
熟練使用注釋標簽,這個例子中的else部分能夠包含所有的非ie瀏覽器(如firefox),以及非32位windows下的IE。努力的研究這段注釋,直到你腦袋發(fā)昏,你就會明白這個邏輯了
if, elseif, else邏輯 (排除IE外的瀏覽器)
繼續(xù)吧,可以看全部內(nèi)容了:
/*@cc_on @if (@_jscript_version >= 5) document.write("IE Browser that supports JScript 5+"); @elif (@_jscript_version >= 4) document.write("IE Browser that supports JScript 4+"); @else document.write("Very old IE Browser"); @end @*/
if, elseif, else 邏輯2(包含其他瀏覽器)
/*@cc_on /*@if (@_jscript_version >= 5) document.write("IE Browser that supports JScript 5+"); @elif (@_jscript_version >= 4) document.write("IE Browser that supports JScript 4+"); @else @*/ document.write("Non IE Browser (one that doesn't support JScript)"); /*@end @*/
全面的處理。在這最后一個例子中,最后一個else語句包含了所有非IE瀏覽器。
出處:藍色理想
責任編輯:moby
上一頁 下一頁 IE中jscript/javascript的條件編譯 [2]
◎進入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|