jscript/javascript條件編譯

IE中jscript/javascript的條件編譯

條件編譯概述

在IE中,有一個鮮爲人知的功能叫做條件編譯(conditional compilation)。自從IE4開始支持這個功能,它由於在一些Ajax相關的javascript腳本中出現而受到一些關注。條件編譯作爲一種獨立形式的對象判斷,使得IE可以根據預定義或用戶定義的條件來決定你的jscript或javascript代碼特定部分是否編譯。也可以把它看成是你的代碼的條件註釋(contional comments,很快會翻譯這篇文章),使你的代碼能夠在非IE瀏覽上也順利運行。

語法概述

通過在你的腳本中使用@cc_on來激活條件編譯,或者直接使用@if或者@set等等作爲CC邏輯中一部分的句子來激活它。這裏是一個示範例子:

例子:

運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

如果你使用IE(任何版本),你應該能夠看到第一個document.write()的輸出,如果是IE5+,接下來的兩個document.write()你也能夠看見(因爲從IE5開始支持JScript 5)。最後一個document.write()方法是爲了其他非IE5+瀏覽器服務的,無論是Firefox,opera,IE4,或者什麼別的。條件編譯依賴於類似在條件註釋中使用的註釋標籤,以確保它在所有瀏覽器中都能工作順暢。

當使用條件編譯的時候,最好先通過@cc_on語句來激活它,只有這樣你才能在你的腳本中包含註釋標籤以保證瀏覽器兼容,、就好像上面例子中所顯示的那樣。(子烏注:這句英文我翻譯的不是很順...看起來似乎與上面的句子矛盾)

@if, @elif, @else,@end 語句

在這個奇怪的開場白之後,這裏是一些用於條件便於的條件語句:

@if
@elif
@else
@end

現在讓我們看一些“古怪”的例子。

if else 邏輯 (排除IE外的瀏覽器)

/*@cc_on
   @if (@_win32)
      document.write("操作系統是32位windows。瀏覽器是IE。");
   @else
      document.write("操作系統不是32位windows。瀏覽器是IE。");
   @end
@*/

這是一段完整的腳本,只被ie瀏覽器所識別並忽略其他所有瀏覽器,這段腳本在不同的操作系統上將顯示不同的內容。對比一下下面這個例子……

if else 邏輯2 (包含其他瀏覽器)

/*@cc_on
  
/*@if (@_win32)
      document.write("操作系統是32位windows。瀏覽器是IE。");
   @else @*/
      document.write("瀏覽器不是IE (如: Firefox)或者瀏覽器不是在32位windows下的IE。");
  
/*@end
@*/

熟練使用註釋標籤,這個例子中的else部分能夠包含所有的非ie瀏覽器(如firefox),以及非32位windows下的IE。努力的研究這段註釋,直到你腦袋發昏,你就會明白這個邏輯了

if, elseif, else邏輯 (排除IE外的瀏覽器)

繼續吧,可以看全部內容了:

/*@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(包含其他瀏覽器)

全面的處理。在這最後一個例子中,最後一個else語句包含了所有非IE瀏覽器。

/*@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
@*/

<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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章