uiwebview javascript没有回复

时间:2012-09-27 16:16:56

标签: javascript objective-c uiwebview return-value

有一种奇怪的行为。在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出现在那里时,为什么我没有得到值并只得到一个空字符串?

1 个答案:

答案 0 :(得分:3)

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

return pos.join();

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

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