- 浏览: 412394 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
pmh905001:
写的很详尽,感谢!
解析jvm.dll和java.exe -
Bll:
插得真深啊,我的是(eclipse_j2ee_juno):F: ...
在eclipse里jsp编译后的java和class文件的位置 -
heming_way:
谢谢,对我很有用,解答了我对多值依赖的疑问
关于多值依赖--范式! -
JavaStudy2011:
java语言解析xml文件 -
vrussell:
Thanks man, it helps me a lot!
获得IEditorPart和IDocument
引用
条件编译介绍
在IE有一个几乎没人知道的特性--“条件编译(Conditional Compilation)”。从IE4开始,IE开始支持这一特性,当它出现在一些Ajax相关的JavaScript中才开始引起人们的注意。它是一种对象探测的绝对形式,条件编译使IE按照用户预先定义在JScript或者JavaScript中的条件逻辑响应你的指令。你也可以把它想成是你脚本的“条件注释(Conditional Comments)”,它一样可以很好的在非IE浏览器中工作。
语法概述:
在脚本中使用 @cc_on 声明来触发条件编译机制启动,也可以直接使用 @if 或 @set 声明作为启动逻辑的一部分。下面是一段例子代码来解释如何启动条件编译机制。
在IE有一个几乎没人知道的特性--“条件编译(Conditional Compilation)”。从IE4开始,IE开始支持这一特性,当它出现在一些Ajax相关的JavaScript中才开始引起人们的注意。它是一种对象探测的绝对形式,条件编译使IE按照用户预先定义在JScript或者JavaScript中的条件逻辑响应你的指令。你也可以把它想成是你脚本的“条件注释(Conditional Comments)”,它一样可以很好的在非IE浏览器中工作。
语法概述:
在脚本中使用 @cc_on 声明来触发条件编译机制启动,也可以直接使用 @if 或 @set 声明作为启动逻辑的一部分。下面是一段例子代码来解释如何启动条件编译机制。
<script type="text/javascript"> /*@cc_on document.write("JScript version: " + @_jscript_version + ".<br>"); /*@if (@_jscript_version >= 5) document.write("JScript Version 5.0 or better.<br \/>"); document.write("This text is only seen by browsers that support JScript 5+<br>"); @else @*/ document.write("This text is seen by all other browsers (ie: Firefox, IE 4.x etc)<br>"); /*@end @*/ </script>
输出结果:
引用
JScript version: 5.7.
JScript Version 5.0 or better.
This text is only seen by browsers that support JScript 5+
JScript Version 5.0 or better.
This text is only seen by browsers that support JScript 5+
如果你使用的是IE浏览器(任何版本),你至少应该看到第一个 document.write() 输出,如果是IE5以上版本,应当可以看到第二个 document.write() 输出。最后一个document.wirte()输出是提供给非IE5以上版本IE浏览器使用的(这话说的比较绕),比如FireFox, Opera, IE4。条件编译标签依赖注释标签协调工作,类似“条件注释”,二者结合以保证脚本能在所有浏览器中工作正常。
当脚本通过条件编译运行,最好是以 @cc_on 声明开始,因为这样你能够在脚本中包括注释标签(comment tags)来确保浏览器兼容性。
@if, @elif,@else, and @end statements
下面是 条件编译 中的语法格式:
@if
@elif
@else
@end
现在让我们看一些“生僻”的例子。
if else (IE 专有)
/*@cc_on @if (@_win32) document.write("OS is 32-bit. Browser is IE."); @else document.write("OS is NOT 32-bit. Browser is IE."); @end @*/
上面这段代码只会被IE浏览器解析,而其他所有浏览器都会忽略这段代码,并且这段代码还依赖于你操作系统的位数(and depending on the bit of your OS, 应该是32位还是其他),根据不同的操作系统,这段代码会给出不同的消息。比对一下下面的例子:
if else II (其他浏览器专有)
/*@cc_on /*@if (@_win32) document.write("OS is 32-bit, browser is IE."); @else @*/ document.write("Browser is not IE (ie: is Firefox) or Browser is not 32 bit IE."); /*@end @*/
通过注释标签操纵,在如Firefox的非IE浏览器以及非32位的IE浏览器中,该示例 else 块中都将提示消息。
if, elseif, else (IE 专有)
继续,整个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 II (其他浏览器专有)
/*@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浏览器中执行。
条件编译中的变量
在上面部分的文章中出现了一些像 @_win32 的奇怪变量。 利用这些 条件编译 预定义的变量你可以用来详细的测试IE或者PC某些方面的特征。
预定义的条件编译变量
变量 描述
@_win32 如果运行在Windows 32位操作系统上返回 true, 否则 NaN. @_win16 如果运行在Windows 16位操作系统上返回 true ,否则 NaN. @_mac 如果运行在苹果Mac操作系统上返回 true,否则 NaN. @_alpha 如果运行在DEC Alpha处理器上返回 true,否则 NaN. @_x86 如果运行在Intel处理器上返回 true, 否则 NaN. @_mc680x0 如果运行在Motorola 680x0处理器上返回 true, 否则 NaN. @_PowerPC 如果运行在Motorola PowerPC处理器上返回 true, 否则 NaN. @_jscript 总是 返回 true. @_jscript_build JScript脚本引擎build代号 @_jscript_version JScript的版本号 IE4 支持 JScript 3.x IE5.x 支持 JScript 5.5 or less IE6 支持 JScript 5.6 @_debug 如果在Debug下编译返回 true, 否则 false. @_fast 如果在快速模式下编译返回 true, 否则 false.
大多数情况下,有可能仅仅只使用到 @_win 和 @jscript_build 变量
Js代码
/*@cc_on @if (@_win32) document.write("OS is 32-bit. Browser is IE."); @else document.write("OS is NOT 32-bit. Browser is IE."); @end @*/
用户自定义变量
用户也可以在 条件编译 代码块中 定义 自己的变量, 使用下面的语法:
Js代码
@set @varname = term
条件编译 同样支持数字类型和布尔类型的变量,但是不支持 字符串 变量。例如:
Js代码
@set @myvar1 = 35 @set @myvar3 = @_jscript_version
条件编译 中的标准 逻辑运算符 集合:
! ~
* / %
+ -
<< >> >>>
< <= > >=
== != === !==
& ^ |
&& |
可以测试一下如果用户定义一个变量,并且值为NaN:
Js代码
@if (@newVar != @newVar) //this variable isn't defined.
只用NaN是它的唯一值并且不等于变量本身的时候才会起作用。
条件编译举例 - try catch 语句块
在本文的开始,作者提到了条件编译是开始出现在Ajax相关的JavaScript脚本当中。下面将演示作者所提到的场景。一段Ajax脚本通常会包含一段创建一个在IE和Firefox中使用的异步传输request请求的对象,而创建该对象的方法通常是固定的。
典型Ajax方法:
function HttpRequest(url, parameters){ var pageRequest = false; //variable to hold ajax object if (window.XMLHttpRequest) // if Mozilla, Safari etc pageRequest = new XMLHttpRequest() else if (window.ActiveXObject){ // if IE try { pageRequest = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ pageRequest = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false }
很多人都会认为在Ajax代码中使用 "try/catch" 块是很优雅的做法,很不幸,事实上并非如此。浏览器并不支持 "throw/catch", 就像 IE4.x,在IE4.x中运行以上代码将会报错。 要解决这一问题,可以使用 条件编译 创建一个真正跨浏览器的友好的 Ajax 解决方法:
Truly cross browser ajax function:
function HttpRequest(url, parameters){ var pageRequest = false //variable to hold ajax object /*@cc_on @if (@_jscript_version >= 5) try { pageRequest = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try { pageRequest = new ActiveXObject("Microsoft.XMLHTTP") } catch (e2){ pageRequest = false } } @end @*/
if (!pageRequest && typeof XMLHttpRequest != 'undefined')
pageRequest = new XMLHttpRequest()
}
使用 条件编译,整个 try/catch 块仅在IE5以上版本有效, 某些浏览器如IE4或非IE浏览器无法识别。Firefox明显会使用XMLHttpRequest来替代。使用以上代码,就可以实现跨浏览器创建ajax对象的方法。
原文地址:http://www.javascriptkit.com/javatutors/conditionalcompile.shtml
- attachments_2011_09_13.zip (961.5 KB)
- 下载次数: 5
发表评论
-
兼容IE和firefox,获得上传文件绝对路径
2011-10-17 09:59 6282firefox为了浏览器安全性,不能获得上传文件绝对路径。。d ... -
ClientAbortException: java.net.SocketException: Connection reset by peer: socke
2011-10-13 14:25 1描述下问题 tomcat报错 ClientAbortExc ... -
关于JavaScript中打印jsp对象的问题
2011-10-07 15:27 1317假如jsp页面里一个strTest的String对象,值为“m ... -
另类的实现逻辑问题
2011-10-07 11:23 1219转自http://www.ilovejs.net/archiv ... -
(转)实现Ajax请求队列按顺序执行
2011-10-07 10:23 5462摘自http://www.ilovejs.net/archiv ... -
摘抄--从function的定义看JavaScript的预加载
2011-09-28 10:59 990http://www.nowamagic.net/librar ... -
关于无法delete文件
2011-09-26 17:12 1384File f=new File(targetDir+&qu ... -
firefox上传文件
2011-09-23 15:19 2135先看一个实例: jsp <tr class=" ... -
js 自行函数
2011-09-19 16:46 999有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式( ... -
IE和FF中获取兄弟节点
2011-09-16 14:26 1473function getNextNode(target){ ... -
设置有iframe的页面根据窗口大小自动调整大小
2011-09-16 14:24 3039有时页面会出现莫名的不能占满页面的情况 window.on ... -
js中style属性以及仿制window.alert()功能和自定义
2011-09-14 17:32 3607JS操作css 下面是引用的。。很不错的总结、、 引用 使用j ... -
css区分各个浏览器和css Hack
2011-09-07 16:29 1276<SCRIPT LANGUAGE="Jav ... -
HTML标签的<button>导致数据在firefox自动提交和在firefox里面弹出div窗口失败
2011-09-07 15:22 1757项目中遇到这么个问题 项目中想利用div制造弹出窗口的操作 c ... -
转:Div自适应高度
2011-08-04 14:49 1465由于设计页面需要,要把两个并排显示的div实现一样高的效果,n ... -
在eclipse里jsp编译后的java和class文件的位置
2011-08-03 14:08 10199eclipse版本不一样,位置也不一样 第一种:(网上搜到的) ... -
iframe的属性:document和Document以及Document的属性和iframe在各个浏览器获得内部文档的写法
2011-08-03 11:37 1998.document引用到是的 iframe所在页面对象, .D ... -
浏览器加载显示html的顺序
2011-08-02 15:36 2270其实浏览器加载显示html的顺序是按下面的顺序进行的: 1、I ... -
div+ajax实现类似iframe功能
2011-08-01 17:03 7806function showAtRight(url) { ... -
PreparedStatement setString 特殊字符乱码
2011-07-29 13:27 2214PreparedStatement setString 特殊字 ...
相关推荐
IE中jscript/javascript的条件编译 作者:JavaScript Kit 译者:子乌(Sheneyan) 翻译日期:2006-02-12 英文原文:Conditional Compilation of JScript/ JavaScript in IE 版权:翻译未经过javascript kit同意,我只对我所...
var s=0//@cc_on+1 在IE中等同于: var s=0+1 条件编译为在注释中运行代码提供了途径。 一般我们在编写JavaScript代码时很少用到条件编译。不过条件编译由于其本身的特性,对我们检测系统,自动识别浏览器编程却...
我们可以用IE私有的条件编译(conditional compilation)结合条件注释来提供针对ie10的Hack:该脚本里面的IE排除条件注释,以确保IE6-9不承认它,然后它功能检测到了名为@ cc_on。 复制代码代码如下: <!–[if !IE]...
@cc_on 备注 @cc_on 语句激活脚本引擎中的条件编译。 强烈推荐在注释中使用 @cc_on 语句,以使不支持条件编译的浏览器将您的脚本视为有效语法而接受它: /*@cc_on*/ // The remainder of the script.或者,在注释外...
2.2.3 Form Item的变量和条件 2-4 2.2.4 引导型Form 2-5 2.2.5 混合引导型Form 2-7 2.2.6 Form的解释规则 2-7 2.3 MENU 2-10 2.4 LINK 2-15 2.5 变量和表达式 2-17 2.5.1 变量的声明 2-17 2.5.2 变量的范围 2-18 ...
条件 CSS 是这个问题的一个解决方案,采用的是 Internet Explorer 的条件注释语法的思想,并把它内联到 CSS 声明之中。 基本用法 条件 CSS 主要用于指出一个特别的 CSS 声明是不是应该用于一个特别的浏览器。当然你...
由于Iview编译使用到了es6的一些新特性,Internet Explorer所有版本中都会报错,缺少includes、findIxdex等问题。 本人研究涉及到的环境:VueCli3.2 + iview 3.1.5 在IE中不支持ES6的新特性,例如:includes、find...
JsMinGUI <br>功能介绍: 1、它可以向命令行版本一样,采用图形界面操作来完成压缩一个 JavaScript 脚本文件。 2、输入文件可以和... 7、比原版的 JsMin 增加了对注释中 IE 条件编译语句压缩的支持。
5) } 6) } A) 第2行 B) 第3行 C) 第4行 D) 第6行 16、下列各种java中的条件语句,那种在java语言中是错误的条件格式? A) if (A >= B) B) if( A = = B) C) if( A = B) D) if((A >B) = =true) 17、下列Java常见事件...
A:电子邮件 B:www浏览 C:程序编译 D:文件传输 21、下列关于退出IE浏览器的操作,不正确的是___B______。 A:直接在页面上单击右键,按"退出程序"按钮 B:右击任务栏中的IE按钮,在弹出的列表菜单中单击"关闭",可...
结果为什么在Typescript中,无法检查函数在编译时可能引发的异常类型。 捕获异常时,您会得到类型any的值。 您可以编码一个结果类型Either / Result类型象Haskell或生锈,它们可以是一个成功值或失败
使用javac编译ie / gmit / dip / *。java运行-> ie.gmit.dip.Benchmarker 图形输出屏幕 表格输出 我们正在对引入的算法进行基准测试,方法是创建从250个最大到10,000个整数的各种输入大小的随机数数组,并根据...
要在构建过程之前查看未优化的代码(和演示),请访问: : ##构建笔记使用Grunt,Bootstrap和Modernizr与Yeoman搭架在实时验证中添加(在满足条件之前,禁用提交按钮) ##去做浏览器测试(针对IE8的优化) 研究...
通过编译函数中的transcludeFn来获取嵌入函数252 通过$transclude在指令控制器中获取嵌入函数253 使用嵌入创建一个if指令253 在指令中使用priority属性255 93理解指令控制器256 为指令控制器注入特殊依赖257 ...
想保存某个网址或网页,可以使用IE浏览器中的____菜单下的____命令( A ) A、"文件"、"另存为" B、"编辑"、"保存" C、"收藏"、"另存为" D、"查看"、"保存" 20. 下面是某单位主页的Web地址URL,其中符合URL格式的是...
'do_kill':1, #满足black_list、condition_browser相关条件,是否kill 'seconds':10, #默认每次录音多少秒 'snap_dir':'snap/', #抓取的截图和录音,放置的目录位置 'hide':0, #是否隐藏自己 }
3.8.11 条件编译&条件属性 60 3.9 本章总结 61 第4章 服务器控件属性 62 4.1 控件属性的作用 62 4.1.1 系统属性 62 4.1.2 自定义属性 62 4.2 简单属性 63 4.3 属性的设计时特性 64 4.4 复杂属性 67 4.4.1 ...
3.8.11 条件编译&条件属性 60 3.9 本章总结 61 第4章 服务器控件属性 62 4.1 控件属性的作用 62 4.1.1 系统属性 62 4.1.2 自定义属性 62 4.2 简单属性 63 4.3 属性的设计时特性 64 4.4 复杂属性 67 4.4.1 ...