2012-05-04 3 views
1

WebView에서 링크의 화면/NSRect 좌표를 가져 오는 방법을 찾으려고합니다. NSView로하고 싶습니다만, WebView에 어떤 방법도 찾을 수 없습니다. 가능한 한 가지 방법은 WebView를 통해 Objective C의 Javascript를 사용하는 것입니다.하지만 이는 복잡해 보입니다.NSRect WebView에서 링크 좌표

내 옵션에는 어떤 것들이 있습니까?

내가 이것을하려는 이유는 WebView에서 웹 페이지의 이미지를 가져 와서 이미지의 링크에 대한 html 링크 맵을 만들고 싶기 때문입니다.

답변

2

거의 완벽하게 작동합니다. 일부 링크는 최종 이미지에서 부적절하지만 DOM 문제 일 수 있다고 생각하십니까?

- (NSString *)constructLinkMap 
{ 
    NSMutableString *result = nil; 
    int i = 0; 
    int linksCount = 0; 

    result = [NSMutableString string]; 
    linksCount = [[[[webView mainFrame] DOMDocument] getElementsByTagName:@"a"] length]; 

    [result appendString:@"<map name=\"linkmap\">"]; 

    for (i = 0; i < linksCount; i++) { 

     id linkItem = [[[[webView mainFrame] DOMDocument] getElementsByTagName:@"a"] item:i]; 

     if (([linkItem text] && ([[linkItem text] length] > 0)) && ([linkItem href] && ([[linkItem href] length] > 0))) { 

      DOMRange *domRange = [webView selectedDOMRange]; 
      [domRange selectNode:linkItem]; 
      NSRect box = [linkItem boundingBox]; 

      if ((box.size.width > 0) && (box.size.height > 0)) 
       [result appendFormat:@"<area class=\"map\" shape=\"rect\" coords=\"%2.0f,%2.0f,%2.0f,%2.0f\" href=\"%@\" alt=\"%@\" />", box.origin.x, box.origin.y, (box.origin.x + box.size.width), (box.size.height + box.origin.y), [linkItem href], [linkItem text]]; 

      } 
    } 
    [result appendString:@"</map>"]; 

    return result; 
}