技术你我(ie6、ie7、ie8)

技术你我(ie6、ie7、ie8)

ID:14579777

大小:47.00 KB

页数:4页

时间:2018-07-29

技术你我(ie6、ie7、ie8)_第1页
技术你我(ie6、ie7、ie8)_第2页
技术你我(ie6、ie7、ie8)_第3页
技术你我(ie6、ie7、ie8)_第4页
资源描述:

《技术你我(ie6、ie7、ie8)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SJ9005:IE6IE7IE8会忽略JavaScript代码中大括号之后的第一个分号·标准参考•·问题描述•·造成的影响•·受影响的浏览器•·问题分析•·解决方案•·参见标准参考根据ECMAScript规范12.1Block中的描述,“{[StatementList]}”即一组大括号之间包含有一组语句,这被称作一个“块”(block)。根据ECMAScript规范12.3EmptyStatement中的描述,单独一个分号“;”是一个“空语句”(EmptyStatement)。在ECMAScript规范的12.5TheifStatement、12.6.1Thedo-w

2、hileStatement和12.14ThetryStatement中,分别描述了“if-else”、“do-while”、“try-catch”的语法,他们有一个共同点:都是一个整体的语句结构(statement)。也就是说,在“if”和“else”之间、“do”和“while”之间、“try”和“catch”之间是不允许有其他语句存在的,包括“空语句”。问题描述在IE6IE7IE8中,JavaScript代码中语句块结束符号“}”之后的第一个分号“;”会被忽略。造成的影响若在如“if”和“else”这样的整体语句结构之间插入一个分号“;”(即在“if”块的结束大括

3、号“}”之后插入一个分号“;”),则仅在IE6IE7IE8中可以正常运行,其他浏览器均会在预处理期出错而使所有代码无法进入解释期,导致页面中的所有JavaScript代码均不会正常执行。受影响的浏览器IE6IE7IE8 问题分析运行下面三组测试代码:if(true){alert("IF");};else{alert("ELSE")}do{alert("DO");};while(false);try{aler("TRY");};catch(e){alert("CATCH");}上面三组测试代码中,“if-else”、“do-while”、“try-catch”均为一个整

4、体语句结构,但他们都被一个空语句“;”给分隔开了。以上代码在各浏览器中的运行结果如下:IE6IE7IE8FirefoxChromeSafariOpera弹出提示框:“IF”syntaxerror:else{UncaughtSyntaxError:UnexpectedtokenelseSyntaxError:ParseerrorSyntaxerror:expectedexpression,gotkeyword'else'弹出提示框:“DO”missingwhileafterdo-loopbodyUncaughtSyntaxError:Unexpectedtoken;Sy

5、ntaxError:ParseerrorSyntaxerror:syntaxerror弹出提示框:“TRY”missingcatchorfinallyaftertryUncaughtSyntaxError:MissingcatchorfinallyaftertrySyntaxError:ParseerrorSyntaxerror:missingcatchorfinallyclauseintrystatement可见:IE6IE7IE8忽略了这个多余的“;”,使代码能够正常解释,而非IE浏览器均按照规范对代码进行了解释,提示错误。进一步测试如下(简单起见,仅以“if-e

6、lse”语句为例):if(true){alert("IF");};;else{alert("ELSE")}这时在所有浏览器中均会出现“语法错误”。可见,IE6IE7IE8仅可以忽略“}”后的第一个“;”,若“;”多于一个则在构造语法树时也会发生语法错误。1注:1.不说IE6IE7IE8允许在“;”的位置允许出现空语句,是因为一个空语句和两个空语句都会破坏代码结构,从测试结果看,IE6IE7IE8是单纯的忽略了第一个“;”而已。解决方案按照规范书写正确的代码。参见知识库§...相关问题§...测试环境操作系统版本:Windows7Ultimatebuild7600浏览器

7、版本:IE6IE7IE8Firefox3.6.3Chrome5.0.375.23devSafari4.0.5Opera10.51测试页面:...本文更新时间:2010-08-12关键字braceJavaScriptsemicolongrammaroffendingtoken分号语法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。