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