2012-05-18 2 views
0

UIWebView에서 요점에 대한 요소를 얻으려면 자바 스크립트 코드를 사용하는 iPhone 앱을 프로그래밍하고 있습니다.element.tagname이 링크에 <a>을 반환하지 않습니다.

내가 아이폰에 약간의 경험을 가지고 있지만, 자바 스크립트에 대한 경험, 나는 튜토리얼 (here)에 해당 코드를 발견

// Javascript code 
function MyAppGetHTMLElementsAtPoint(x,y) { 
    var tags = ","; 
    var e = document.elementFromPoint(x,y); 
    while (e) { 
     if (e.tagName) { 
      tags += e.tagName + ','; 
     } 
     e = e.parentNode; 
    } 
    return tags; 
} 

// iPhone code 
    NSString *tags = [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"MyAppGetHTMLElementsAtPoint(x,y);"]] 
    if ([tags rangeOfString:@",A,"].location != NSNotFound) { 
     NSLog(@"Link found"); 
     .... 
    } 

문제는 내가 예를 들어,이 코드를 테스트 한 것입니다, Google 검색 웹 페이지에서 '링크 발견'로그를받지 못했습니다.

페이지가 전체 HTML이 아니기 때문에 그럴 수 있다고 생각하지만 더 이상 할 수 없습니다.

감사합니다.

PD : 내가 아니라 IMG 태그의 모든 페이지에, 같은 문제가

답변

0

@JuanMendes가 제안한 것처럼, iPhone이 자바 스크립트 기능에 전달하는 좌표에 문제가있었습니다.

// Not working code 
// Searches the location on the main view, that is the full screen 
CGPoint pt = [gestureRecognizer locationInView:self.view]; 

// Working code 
// Searches the location only on the webView 
CGPoint pt = [gestureRecognizer locationInView:self.webView]; 

이 좀 도와 가지고있는 사람들을위한 감사합니다, 특히 @JuanMendes

+0

그러면 내 대답을 정확하게 표시해야합니다! –

+0

나는 문제가 될 수 있다고 제안했기 때문에 새로운 대답을 만들었지 만 같은 문제에 부딪 치는 사람에게는 올바른 코드를 남기고 싶습니다. – Garoal

+0

하지만 원하는 경우 내 iPhone 코드를 복사하여 내 대답을 삭제하고 동의합니다. – Garoal

0

e.tagName 때마다 로그인 시도 되세요 (아마 때문에 CSS의의)? 그러면 링크를 통해 얻고있는 것을 볼 수 있습니다.

+0

예,이 받고 있어요위한 :, DIV, DIV, LI, OL, DIV, DIV, DIV를, DIV , DIV, DIV, DIV, DIV, DIV, BODY, HTML, – Garoal

2

XHTML의 일부 모드는 소스에 넣을 때 tagName을 반환하므로 사례가 낮을 수 있습니다. 그게 문제가 아니라면

tags += e.tagName.toUpperCase() + ','; 

tags 문자열이 포함 된 콘텐츠를 호출하려고?

완전히 관련이없는 제안

배열은 쉼표를 만들 수있는 가장 좋은 방법은 내가 기능이 잘 작동됩니다 증명하는 JSFiddle http://jsfiddle.net/cgpVk/1/를 제공 목록

function MyAppGetHTMLElementsAtPoint(x,y) { 
    var tags = []; 
    var e = document.elementFromPoint(x,y); 
    while (e) { 
     if (e.tagName) { 
      tags.push(e.tagName); 
     } 
     e = e.parentNode; 
    } 
    return tags.join(','); 
} 

는 분리된다. 당신은 아마도 오른쪽 좌표를 전달하지 않을 것입니다.

+0

다음을 포함합니다. , HTML, – Garoal

+0

링크를 클릭 하시겠습니까? –

+0

네, 완전히 확실하다 – Garoal