Obtenir la hauteur totale du contenu de webView en utilisant Javascript
Je suis en utilisant un UIWebView
pour l'affichage de contenu, sous la forme d'une chaîne HTML – pas un site web, supérieure à celle de l'écran de l'iPhone, sans avoir à faire défiler dans la webView lui-même, de laisser le parent scrollView.
Pour y parvenir, j'ai besoin d'un moyen pour obtenir le total de la taille du document, y compris la zone déroulante pour définir le webView de la hauteur. J'ai essayé un certain nombre de différents Javascript solutions:
(document.height !== undefined) ? document.height : document.body.offsetHeight //Returns height of UIWebView
document.body.offsetHeight //Returns zero
document.body.clientHeight //Returns zero
document.documentElement.clientHeight //Returns height of UIWebView
window.innerHeight //Returns height of UIWebView -2
document.body.scrollHeight //Returns zero
Est-il une solution qui fonctionne réellement?
Courant (chômé) code:
[[[self.singlePost.contentText subviews] lastObject] setScrollEnabled:NO];
int content_height = [[self.singlePost.contentText stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] intValue];
NSLog(@"Content_height: %d", content_height);
CGRect rect = self.singlePost.contentText.frame;
rect.size.height = content_height;
self.singlePost.contentText.frame = rect;
source d'informationauteur Emil
Vous devez vous connecter pour publier un commentaire.
Il n'est pas nécessaire d'utiliser le Javascript dans iOS 5.0 et jusqu' - vous de direct, documenté l'accès à ses scrollView:
Pour obtenir la hauteur totale du contenu de la webView.
Quand j'ai essayé avec mon code, j'ai trouvé,
(1)
retour de la hauteur inférieure à la hauteur d'origine. Mais(2)
retour de la hauteur réelle. Ma suggestion est d'obtenir leMax
des deux.Sortie
Où appelez-vous votre code?
Pour moi, il renvoie 0 si elle est appelée juste après l'loadHTMLString Méthode.
Si je l'appelle dans le (void)webViewDidFinishLoad:(UIWebView *)theWebView délégué, j'obtiens une valeur valide.
Je suis allé avec une approche légèrement différente, pour créer un <DIV> que j'ai pu d'obtenir la taille, parce que j'avais aucune chance avec l'inspection de document/corps.
C'est MonoTouch C#, mais devrait fonctionner correctement en Objective-C:
et l'obtention de la hauteur dans LoadFinished:
@Jesse, cela fonctionne lorsque la mise à jour avec HTML, qui permettrait de générer une taille plus petite que ce qui était précédemment montré.