2012-09-27 3 views
1

이상한 행동이 있습니다. UIWebView에는 요소의 위치를 ​​감지하는 javacript 함수가 있습니다. 이 하나uiwebview javascript 반환 없음

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이있는 것으로 보이는 이유는 무엇입니까?

답변

3

이것은 오히려 동시에 단순하고 완전한 신비입니다. 이유는 모르지만 "stringByEvaluatingJavaScriptFromString :"은 자바 스크립트 결과가 이미 문자열과 닮은 것을 좋아합니다. 코드가 당신의 반환 배열에 가입() 함수를 추가 해결하려면 :

return pos.join(); 

이 하나의 문자열로 배열에 가입하고 그것은있는 NSString으로 문제를 전달하지 않습니다.

경고가 작동하는 이유는 유사한 방식으로 데이터를 표시하는 사이트를 손상시키지 않는다고 생각합니다.

+0

로 고정했습니다. 고마워요! – user1703307

+0

내 대답이 효과가 있다면 문제가되지 않을 수도 있습니다. 이것이 스택 오버 플로우가 작동하는 방식입니다. 읽기 : [대답 수락 방법은 무엇입니까?] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – carlossless