在iOS8上JSON.stringified时,getClientRects()的Rect是空的,但它在iOS7上运行良好

时间:2015-10-02 13:57:07

标签: javascript ios uiwebview

在我的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尽可能......

0 个答案:

没有答案