问题描述
最近遇到一个神奇的Bug,通过UIWebView的stringByEvaluatingJavaScriptFromString:方法执行一段JavaScript代码时,JavaScript报错:
SyntaxError: Unexpected EOF
经过仔细的排查,发现待执行的JavaScript代码里面包含U+2028字符。还找到了Stack Overflow相关讨论。JavaScript解析器会把行分隔符U+2028和段落分隔符U+2029解析成一行的结束,代码里要是包含这两个字符相当于换行,例如:
alert(“\u2028”)
就会被解析为
alert(“
“)
于是就产生了语法错误。
解决方案
我用的方法比较简单、粗暴,在执行JavaScript代码前,直接过滤掉这两个字符。代码如下:
1 | // |