jscript/javascript条件编译

原创 2006年05月28日 21:42:00

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>

IE下的JS条件编译

 In IE, there is a little known feature called conditional compilation. Supported since IE4, this fe...
  • kittyjie
  • kittyjie
  • 2009年06月14日 15:42
  • 1850

jscript和javascript区别

今日在使用弹出层时发现ie,谷歌下支持弹出框,而火狐下却不支持,百思不得其解,试了很多地方都解决不了问题,最后将改成了 火狐下终与出现了弹出框,最终查了资料才知道jscript和javascript是...
  • meimingming
  • meimingming
  • 2012年01月17日 10:13
  • 1580

jscript与javascript的区别

netscape开发了在Navigator中使用的LiveScript语言,后改名为JavaScript Microsoft发行jscript用于internet explorer. 最初的jscri...
  • edwardq2266
  • edwardq2266
  • 2008年04月18日 15:16
  • 1639

javascript与Jscript区别

区分JavaScript和JScript 很多人无法区分JavaScript和JScript,或者根本不去区分它们,这是不对的。 JScript是Microsoft公司对ECMA262语言规范的一...
  • github_36268254
  • github_36268254
  • 2016年11月09日 21:59
  • 159

JScript 是 JavaScript 的缩写吗?

JScript 是 JavaScript 的缩写吗?        资策会数字教育研究所讲师 杨宏文                          很多人都误以为JScript就是JavaScri...
  • zhaoxiaoyang5156
  • zhaoxiaoyang5156
  • 2007年06月16日 22:58
  • 1292

经典ASP开发:弃VBScript而选JScript的八大理由

我承认,我是 JS 服务端技术的鼓吹者,我企图将 JS 语言的应用“从客户端包围服务端”,况且这不是新鲜事(SSJS),与我保持同一意见的人应该是有的,尽管对此不会有太大的热情,或者没有为此而“雄辩”...
  • zhangxin09
  • zhangxin09
  • 2010年04月17日 15:52
  • 6095

JavaScript与JScript的区别

JavaScript与JScript的区别 前言:很多人无法区别JavaScript和JScript,或者根本就不去区分他们,这是不对的. 什么是JScript?JScript是微软公司对ECMA...
  • z3881006
  • z3881006
  • 2017年09月06日 15:28
  • 116

三国志的故事(ECMAScript、JavaScript和JScript )

(ECMAScript、JavaScript和JScript )的关系
  • xujiaxuliang
  • xujiaxuliang
  • 2010年10月25日 08:18
  • 4625

JS:《Microsoft JScript 运行时错误: 缺少 '}'》解决方案

今天遇到这样一个问题,“Microsoft JScript 运行时错误: 缺少 '}'”,在之前使用DataTable转换成Json数据,并解析Json数据过程中从未出现过此问题,经过测试发现从数据库...
  • mazhaojuan
  • mazhaojuan
  • 2013年02月03日 12:55
  • 4554

ECMAScript,javascript,jscript

ECMAScript是一种由欧洲计算机制造商协会(ECMA)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是...
  • yethyeth
  • yethyeth
  • 2007年03月05日 22:50
  • 1027
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jscript/javascript条件编译
举报原因:
原因补充:

(最多只允许输入30个字)