有奇怪的行为。在 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
似乎存在时,为什么我无法取回该值并且只得到一个空字符串?
最佳答案
这对我来说相当简单,同时又完全是个谜。我不知道为什么,但 "stringByEvaluatingJavaScriptFromString:" 喜欢 javascript 结果已经类似于字符串。要修复您的代码,只需将 join() 函数添加到您的返回数组中即可:
return pos.join();
这会将数组连接成单个字符串,并且它将作为 NSString 传递,没有问题。
我认为警报起作用的原因是它不会破坏以类似方式显示数据的网站。
关于javascript - uiwebview javascript 没有返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625758/