最近在处理安卓和 iOS 笔记同步这块,使用的基础框架是 webview js 可动态插入内容的方法,在调试的时候发现有一些比较特殊情况导致其中一个平台能够正常加载,但是另外一个平台不能正常加载的情况。
一个是之前遇到的转译字符的问题,另外一个就是当内容里面有单引号【’】,例如文本中有 didn’t 包含有单引号的数据内容。
- 如果这个内容已经在网页的源码中,webview 显示会正常。
- 如果这个内容还没有在网页的源码中,需要使用 js 的 insertHTML 方法,而且是通过 Android 的 webview 调用 js 的方法来动态插入包含有单引号内容的数据,这个时候webview 显示会不正常,需要进行对单引号进行 encode 操作。
不仅仅是 Android webview 通过 js 外部动态插入包含有单引号的方法,MAC chrome 浏览器也会出现同样的问题,不过 MAC chrome 处理方式更加简洁,直接在单引号前面添加反斜杠【\】就行了。