2

有一个奇怪的行为。在UIWebView我有一个 javacript 函数来检测元素的位置。这个:

function getPosition(element){

    var el = element;
    var pos = [el.offsetLeft, el.offsetTop];
    var parent = el.offsetParent;
    if (parent != el) {
        while (parent) {
            pos[0] += parent.offsetLeft;
            pos[1] += parent.offsetTop;
            parent = parent.offsetParent;
        }
    }
    //alert(pos);
    return pos;
}

没什么特别的……但是当我这样调用函数时:

NSString *position = [browserWebView stringByEvaluatingJavaScriptFromString:@"getPosition(document.getElementById('exampleElement'));"];

我得到一个空的NSString背部。当我在函数中插入警报(现在取消注释)时,我在警报中得到了正确的位置!!

pos当正确的返回值似乎存在时,为什么我没有取回值并只得到一个空字符串?

4

1 回答 1

3

这对我来说相当简单,同时也是一个完全的谜。我不知道为什么,但是“stringByEvaluatingJavaScriptFromString:”喜欢 javascript 结果已经类似于字符串。要修复您的代码,只需在返回数组中添加一个 join() 函数:

return pos.join();

这会将数组连接成单个字符串,并且它将作为 NSString 传递没有问题。

我认为警报起作用的原因是它不会破坏以类似方式显示数据的网站。

于 2012-09-27T18:56:57.433 回答