2012-03-30 25 views
5

Hiện tại tôi đang chụp this sample website và hiển thị trong chế độ xem web của tôi. Trang web hiển thị chính xác.Lấy các phần tử được chọn theo chương trình từ uiwebview?

Bây giờ tôi đang cố gắng tìm ra dữ liệu nào được chọn khi người dùng đã nhấn vào uiwebview.

Đối với điều này tôi có thể nhận được CGPoint cho vòi bằng cách sử dụng UITapGestureRecognizer.

-(void)singleTap:(UIGestureRecognizer *)gestureRecognizer 
{ 

CGPoint touchPoint = [gestureRecognizer locationInView:myWebView]; 

NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).toString()", touchPoint.x, touchPoint.y]; 

NSString * tagName = [myWebView stringByEvaluatingJavaScriptFromString:js]; 

NSLog(@"Selected Name: %@",tagName); 

} 

// In log it is displaying [object SVGPathElement] 

Tôi muốn để có được các dữ liệu chính xác khi người dùng lựa chọn các thanh dọc trong đồ thị đầu tiên (VD: 1994/1995/1996).

Có thể giải thích cách thực hiện điều này không?

+0

Trang HTML có thuộc quyền kiểm soát của bạn không? – sergio

+0

Không có nó dưới sự kiểm soát của tôi.Nhưng bạn vẫn có thể đề nghị opnion của bạn :) – raaz

Trả lời

0

Nếu chúng là tất cả các phần tử DOM độc lập, bạn có thể nghe các sự kiện chạm trong JavaScript và khi bạn nhận được đối tượng sự kiện, cần có event.target, đây sẽ là yếu tố người dùng nhấp vào. Sau đó bạn có thể nắm bắt dữ liệu bạn cần trong JS, và sau đó gửi nó trở lại Objective-c. Cách tốt nhất để lấy dữ liệu từ JS sang mã gốc là sử dụng một số UIWebView delegate, điều này hy vọng sẽ làm được điều đó cho bạn!

0

Khi người dùng chọn mục trên UIWebView, thực hiện một yêu cầu http AJAX, mà bạn có thể đánh chặn trong UIWebViewDelegate bạn thực hiện phương pháp

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

.

Sau đó, bạn có thể chấp nhận yêu cầu tải, chặn nó, phân tích nó, làm bất cứ điều gì bạn thích với nó.

2

Bạn không chỉ định những gì là không làm việc cho bạn ... dù sao, một vài gợi ý:

  1. thử với js sau trong xử lý máy của bạn:

    NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).innerHTML", touchPoint.x, touchPoint.y]; 
    
  2. khi tạo handler cử chỉ máy của bạn, chỉ định một đại biểu cho nó (nó có thể được điều khiển của bạn):

    tap1.delegate = self; 
    
  3. trong điều khiển (hoặc xem web đại biểu) của bạn, xác định các phương pháp đại biểu sau đây:

    - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer*)otherGestureRecognizer { 
        return YES; 
    } 
    
  4. nếu bạn đang sử dụng iOS 5, có một cái nhìn tại this article about a glitch in elementFromPoint.

Bằng cách làm như thế này, tôi có thể nhận được giá trị HTML chính xác cho đối tượng đã chọn.

+0

Được cảnh báo điều này không hoạt động tốt cho hình ảnh của Google hoặc các trang web khác hiển thị hình ảnh theo cách vui nhộn ... – jjxtra

Các vấn đề liên quan