2010-11-26 8 views

Répondre

0

Si vous avez besoin du contenu de l'URL actuelle dans votre vue Web, vous pourriez avoir quelque chose comme ça dans un UIViewController. Je n'ai pas compilé ce code, donc il peut y avoir quelques erreurs de syntaxe, mais cela devrait être un bon point de départ pour votre problème.

@interface aViewController : UIViewController <UIWebViewDelegate> 
    UIWebView *webView; 
    NSString *htmlSource; 
@end 
@implementation aViewController 

-(void) viewDidLoad { 
    CGRect webFrame = [[UIScreen mainScreen] applicationFrame]; 

    self.webView = [[UIWebView alloc] initWithFrame:webFrame]; 
    self.webView.delegate = self; 

    NSURL *aURL = [NSURL URLWithString:@"http://www.myurl.com"]; 
    NSURLRequest *aRequest = [NSURLRequest requestWithURL:aURL]; 
    //load the index.html file into the web view. 
    [self.webView loadRequest:aRequest]; 
}  
//This is a delegate method that is sent after a web view finishes loading content. 
- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
    NSLog(@"finished loading"); 
    self.htmlSource = [[NSString alloc] initWithData:[[webView request] HTTPBody] encoding:NSASCIIStringEncoding]; 
} 

@end 
+0

Deux requêtes à la même URL doublent vos chances d'obtenir une réponse d'erreur, augmentent le risque de réponses incohérentes et augmentent votre utilisation de la radio. La mise en cache peut atténuer ces problèmes, mais pourquoi en dépendre lorsque vous avez déjà les données? –

+0

À quoi faites-vous référence par deux requêtes à la même URL? – Travis

+0

Ahh, je vois ce que tu veux dire. Je l'ai mis à jour pour récupérer la source basée sur le HTTPBody de NSURLRequest de UIWebView. – Travis

1

Vous pouvez obtenir quoi que ce soit du point de vue web que JavaScript peut revenir à l'aide stringByEvaluatingJavaScriptFromString :. Essayez quelque chose le long de

document.lastChild.outerHTML 

Le document aura probablement deux nœuds enfants; le premier sera le DOCTYPE, et le second l'élément <html>.

Questions connexes