JScript中的条件注释详解


Posted in Javascript onApril 24, 2015

JScript 可以使用以下语句根据条件编译变量的值控制脚本的编译。既可以使用 JScript 提供的变量,也可以使用 @set 指令或 /define 命令行选项定义自己的变量。

@cc_on 
 激活条件编译支持。
 
@if 
 根据表达式的值,有条件地执行一组语句。
 
@set 
 创建使用条件编译语句的变量。
 
@cc_on、@if 或 @set 语句激活条件编译。条件编译的一些典型用途包括在 JScript 中使用新功能、将调试支持嵌入到一个脚本中以及跟踪代码执行。

当编写由 Web 浏览器运行的脚本时,总是将条件编译代码放在注释中。因此,不支持条件编译的宿主可以忽略该代码。这是一个示例。

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

此示例使用特殊的注释分隔符,仅当 @cc_on 语句激活条件编译之后才使用这些分隔符。不支持条件编译的脚本引擎显示一则消息,建议需要使用新的脚本引擎,而不会产生错误。支持条件编译的引擎根据引擎的版本编译第一个或第二个 document.write。请注意,7.x 版表示 JScript .NET。有关更多信息,请参见检测浏览器功能。

条件编译对于服务器端脚本和命令行程序也很有用。在这些应用程序中,可使用条件编译将其他函数编译到一个程序中,便于在调试模式下进行分析。

以下预定义变量可用于条件编译。

@_win32
 如果在 Win32 系统上运行,并且没有指定 /platform 选项或指定了 /platform:anycpu 选项,则为 true;否则为 NaN。
 
@_win16
 如果在 Win16 系统上运行,则为 true;否则为 NaN。
 
@_mac
 如果在 Apple Macintosh 系统上运行,则为 true;否则为 NaN。
 
@_alpha
 如果在 DEC Alpha 处理器上运行,则为 true;否则为 NaN。
 
@_x86
 如果在 Intel 处理器上运行,并且没有指定 /platform 选项或指定了 /platform:anycpu 选项,则为 true;否则为 NaN。
 
@_mc680x0
 如果在 Motorola 680x0 处理器上运行,则为 true;否则为 NaN。
 
@_PowerPC
 如果在 Motorola PowerPC 处理器上运行,则为 true;否则为 NaN。
 
@_jscript
 始终为 true。
 
@_jscript_build
 JScript 脚本引擎的内部版本号。
 
@_jscript_version
 以 major.minor 格式表示 JScript 版本号的数字。
 
@_debug
 如果在调试模式下编译则为 true;否则为 false。
 
@_fast
 如果在快速模式下编译则为 true;否则为 false。
 
注意 
JScript .NET 报告的版本号为 7.x。JScript 8.0 报告的版本号为 8.x。
 
在使用条件编译变量之前,必须先打开条件编译。@cc_on 语句可打开条件编译。条件编译变量通常用于针对 Web 浏览器编写的脚本中。在为 ASP 或 ASP.NET 页或命令行程序编写的脚本中很少使用条件编译变量,这是因为可以使用其他方法确定编译器的兼容性。

当编写用于网页的脚本时,始终将条件编译代码放在注释中。这样,不支持条件编译的宿主就可以忽略该代码。这是一个示例。

/*@cc_on

  document.write("JScript version: " + @_jscript_version + ".<BR>");

  @if (@_win32)

     document.write("Running on 32-bit Windows.<BR>");

  @elif (@_win16)

     document.write("Running on 16-bit Windows.<BR>");

  @else

     document.write("Running on a different platform.<BR>");

  @end

@*/
Javascript 相关文章推荐
js跨域和ajax 跨域问题的实现思路
Sep 05 Javascript
为调试JavaScript添加输出窗口的代码
Feb 07 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
jquery dialog获取焦点的方法
Feb 09 Javascript
vue.js 上传图片实例代码
Jun 22 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
Vue深入理解插槽slot的使用
Aug 05 Vue.js
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 #Javascript
js闭包实现按秒计数
Apr 23 #Javascript
jQuery中使用each处理json数据
Apr 23 #Javascript
javascript数组去重方法汇总
Apr 23 #Javascript
javascript实现英文首字母大写
Apr 23 #Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 #Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 #Javascript
You might like
简单的cookie计数器实现源码
2013/06/07 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
高一政治教学反思
2014/01/28 职场文书
医学求职自荐信
2014/06/21 职场文书
乒乓球比赛通知
2015/04/27 职场文书
征求意见函
2015/06/05 职场文书
公司酒会主持词
2015/07/02 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
入党申请书格式
2019/06/20 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技