在我的iOS应用程序中,我有一个UIWebView,可以加载一些html内容。用户可以选择文本并在选择上创建突出显示。我需要突出显示区域的坐标,所以我在以下javascript函数中使用getClientRects():
function rectsForSelection() {
var i = 0, j = 0;
var allSelections = window.getSelection();
var result = []; // An empty array right now
// Generally, there is only one selection, but the spec allows multiple
for (i=0; i < allSelections.rangeCount; i++) {
var aRange = allSelections.getRangeAt(i);
var rects = aRange.getClientRects();
for (j=0; j<rects.length; j++) {
result.push(rects[j]);
}
}
return JSON.stringify(result);
}
在使用iOS7的设备上,我获得了正确的JSON字符串,表示如下所示的rects数组:
[{\"left\":454,\"right\":585,\"top\":126,\"height\":16,\"bottom\":142,\"width\":131}, {\"left\":312,\"right\":515,\"top\":142,\"height\":16,\"bottom\":158,\"width\":203}]
然而,在iOS8上,我得到数组中每个矩形的空内容(尽管iOS8中数组中的rects数量是正确的):
[{},{}]
我已经阅读了有关iOS8上JSON.stringify函数的一些问题,但无法找到导致该问题的原因的任何合理解释。我可以使用一些将rects数组转换为JSON或类似格式字符串的替代方法吗?我真的想避免手动转换为字符串每个矩形,并继续使用javascript尽可能......