WebView
#Cabecera
#include <gui/webview.h>
#Funciones
| WebView* | webview_create (void) |
| void | webview_OnFocus (...) |
| void | webview_size (...) |
| void | webview_navigate (...) |
| void | webview_back (...) |
| void | webview_forward (...) |
Un control WebView nos permitirá incrustar contenido Web en nuestra aplicación. Se comportará de igual forma que otros controles de vista como View o TextView en lo relativo a maquetación o redimensionado, mostrando un navegador totalmente funcional en su área cliente (Figura 1). En ¡Hola WebView! tienes una aplicación de ejemplo.
- Utiliza webview_create para crear una vista web.
- Utiliza webview_navigate para mostrar el contenido de una URL.
- Utiliza webview_back para ir a la página anterior.
- Utiliza webview_forward para ir a la página siguiente.
#1. Dependencias de WebView
WebView depende de tecnologías nativas en cada sistema operativo: Edge:WebView2 en Windows, WebKit2 en GTK/Linux y WKWebView en macOS (Figura 2). El build system de NAppGUI, se encargará de gestionar las dependencias por nosotros de forma automática. No obstante, debes tener en cuenta estos puntos, antes de utilizar este control en tus aplicaciones de forma exitosa.
#1.1. WebView en Windows
- En la carpeta
prj/depend/web/winestán las cabeceras y librerías estáticas de WebView2. - Se han obtenido desde este paquete de NuGet.
- Existen problemas al compilar en modo Debug desde VS2017 y VS2015. Sin embargo, en modo Release, las aplicaciones funcionan sin problema utilizando estas versiones de Visual Studio. Más información aquí.
- Visual Studio 2013 y anteriores no soportan la compilación del WebView2.
- MinGW no soporta la compilación del WebView2.
- Se recomienda el uso de VS2019 o VS2022 para generar aplicaciones con WebView2.
- WebView2 solo funciona en Windows 10 y Windows 11.
#1.2. WebView en macOS
No debes hacer nada especial para compilar el WebView en macOS. CMake enlazará automáticamente com WebKit.framework. Por el momento, este soporte está disponible para macOS 10.10 Yosemite y posteriores, ya que WKWebView no está presente en distribuciones anteriores.
#1.3. WebView en Linux
NAppGUI carga WebKit2 en tiempo de ejecución mediante dlib_open, al crear el primer WebView. No es necesario instalar las librerías de desarrollo de WebKit2 para compilar, ni las aplicaciones dependerán de WebKit2 para arrancar. Para que el control muestre contenido Web, la máquina donde se ejecute la aplicación deberá tener instalado WebKit2.
sudo apt-get install libwebkit2gtk-4.1-0 // Ubuntu 22 and later sudo apt-get install libwebkit2gtk-4.0-37 // Ubuntu 16, 18, 20 sudo apt-get install libwebkit2gtk-3.0-25 // Ubuntu 14 |
El soporte WebKit2 no está disponible en Ubuntu 12 y anteriores.
#2. WebView sin soporte Web
Si no hay soporte Web, las aplicaciones que hagan uso del control WebView compilarán y se podrán ejecutar. La diferencia es que no mostrarán contenido Web en el control, tan solo un área vacía (Figura 3). Esto ocurre cuando WebKit2 no está instalado en Linux, al compilar con MinGW o Visual Studio 2013 y anteriores, o en macOS anteriores a 10.10 Yosemite. CMake lo indicará en la línea WEB_SUPPORT de la configuración.
La ausencia de soporte Web no generará errores de compilación ni enlace en aplicaciones que utilicen el WebView.
#webview_create ()
Crea una vista Web.
WebView* webview_create(void);
Retorna
La vista Web.
#webview_OnFocus ()
Establece un manejador para el foco del teclado.
void webview_OnFocus(WebView *view, Listener *listener);
| view | La vista. |
| listener | Función callback que se llamará cuando se reciba o se pierda el foco del teclado. |
Observaciones
Ver Eventos GUI.
#webview_size ()
Establece el tamaño por defecto de la vista.
void webview_size(WebView *view, const S2Df size);
| view | La vista. |
| size | El tamaño. |
Observaciones
Corresponde al Dimensionado natural del control. Por defecto 245x144.
#webview_navigate ()
Carga una URL en la vista Web.
void webview_navigate(WebView *view, const char_t *url);
| view | La vista. |
| url | URL a cargar, cadena C UTF8 terminada en carácter nulo |
#webview_back ()
Retrocede a la pagina anterior de la pila del navegador.
void webview_back(WebView *view);
| view | La vista. |
#webview_forward ()
Avanza a la pagina siguiente de la pila del navegador.
void webview_forward(WebView *view);
| view | La vista. |


