IE中jscript/javascript的条件编译

作者:子乌 来源:子乌的叶子 时间:2007-10-03 14:03:00 

条件编译概述

  在IE中,有一个鲜为人知的功能叫做。自从IE4开始支持这个功能,它由于在一些Ajax相关的javascript脚本中出现而受到一些关注。条件编译作为一种独立形式的对象判断,使得IE可以根据预定义或用户定义的条件来决定你的jscript或javascript代码特定部分是否编译。也可以把它看成是你的代码的条件注释,使你的代码能够在非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> 


例子:

JScript 版本: 5.6.
JScript 版本 5.0+.
只有当浏览器支持JScript5+的时候你才能看到这些文字。

  如果你使用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 (包含其他浏览器)

Language:javascript, parsed in: 0.001 seconds, using GeSHi 1.0.7.12


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


  熟练使用注释标签,这个例子中的else部分能够包含所有的非ie浏览器(如firefox),以及非32位windows下的IE。努力的研究这段注释,直到你脑袋发昏,你就会明白这个逻辑了:)

标签:jscript,javascript
0
投稿

猜你喜欢

  • asp 批量删除选中的多条记录

    2011-03-29 10:33:00
  • 如何在网页中制作虚线表格

    2010-10-20 20:07:00
  • ASP连接Access数据库的几种方法

    2013-06-01 20:33:19
  • 剖析SQL Server 事务日志的收缩和截断

    2009-01-15 13:04:00
  • asp中判断是否是手机浏览器以及手机类型

    2014-12-06 09:33:05
  • 游戏的用户体验营销小札

    2009-08-30 15:13:00
  • SQL Server 2005 输入框不能输入中文问题

    2010-02-04 09:14:00
  • 从算法入手讲解SQL Server的典型示例

    2008-12-18 14:51:00
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页

    2009-03-04 10:56:00
  • asp下通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问

    2011-02-24 11:00:00
  • PJBlog3优化——单击自动输入验证码

    2009-05-17 11:03:00
  • 如何远程连接SQL Server数据库

    2009-06-08 12:41:00
  • 小议JavaScript泛式框架架构的逻辑形式

    2010-07-02 12:55:00
  • jQuery使用手册--核心篇(Core)

    2007-11-22 22:05:00
  • SQLServer 游标简介与使用说明

    2009-07-02 13:53:00
  • CSS双线边框研究

    2009-09-03 12:12:00
  • Dojo Style Javascript 编程规范

    2007-10-25 17:24:00
  • js求一组数中的最大数

    2008-04-10 12:00:00
  • SQL中自己创建函数 分割字符串

    2008-11-20 16:13:00
  • 支持多风格变换的ASP分页类

    2007-10-13 18:48:00
  • asp之家 网络编程 m.aspxhome.com