how example cocoa webview

cocoa - how - wkwebview example



¿Cómo cambiar el tamaño de WebView según su contenido? (2)

Otra alternativa es pedir al DOM la altura de su contenido.

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { NSString* heightOutput = [sender stringByEvaluatingJavaScriptFromString:@"document.getElementById(/"foo/").scrollHeight;"]; NSInteger height = [heightOutput integerValue]; [[self splitView] setPosition:height + 10 ofDividerAtIndex:0]; }

El punto clave aquí es colocar su contenido dentro de un elemento nombrado para que se pueda usar getElementById. Mi implementación usó un elemento simple de <div id="foo"> .

En mi caso particular, mi WebView estaba dentro de un NSSplitView, por lo que primero restablecer la altura del WebView a algo pequeño estaba causando un parpadeo.

Aquí tengo un proyecto de muestra que lo demuestra.

Quiero establecer contenidos html simples dentro de una vista web y luego cambiar su tamaño de acuerdo a su contenido.

Para establecer contenidos html simples dentro de la vista web, utilicé este código y está funcionando bien:

[[myWebView mainFrame] loadHTMLString:webViewContents baseURL:baseURLFramed];

En este momento, si el contenido es más grande que su tamaño real, aparece en la vista web mostrando el desplazamiento vertical y horizontal en él. Quiero establecer un ancho predeterminado y administrar la altura de acuerdo con su contenido de manera que no aparezca el desplazamiento horizontal ni vertical.

¿Alguien puede sugerirme alguna solución para eso?

Gracias,

Miraaj


Puede registrarse como el delegado de carga de cuadros de WebView , y cuando la página se carga puede solicitar el tamaño de la vista del documento del marco principal y cambiar el tamaño del WebView . Asegúrese de desactivar las barras de desplazamiento en el marco o tendrá problemas.

Tenga en cuenta que ciertas páginas pueden ser muy grandes, cuando probé daringfireball.net llegó a 17612 puntos de alto, lo que obviamente es demasiado grande para mostrar en la pantalla.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { //set ourselves as the frame load delegate so we know when the window loads [webView setFrameLoadDelegate:self]; //turn off scrollbars in the frame [[[webView mainFrame] frameView] setAllowsScrolling:NO]; //load the page NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://daringfireball.net"]]; [[webView mainFrame] loadRequest:request]; } //called when the frame finishes loading - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)webFrame { if([webFrame isEqual:[webView mainFrame]]) { //get the rect for the rendered frame NSRect webFrameRect = [[[webFrame frameView] documentView] frame]; //get the rect of the current webview NSRect webViewRect = [webView frame]; //calculate the new frame NSRect newWebViewRect = NSMakeRect(webViewRect.origin.x, webViewRect.origin.y - (NSHeight(webFrameRect) - NSHeight(webViewRect)), NSWidth(webViewRect), NSHeight(webFrameRect)); //set the frame [webView setFrame:newWebViewRect]; //NSLog(@"The dimensions of the page are: %@",NSStringFromRect(webFrameRect)); } }