Buscando información para la librería GMLib sobre las novedades del TWebBrowser en Androis y iOS en las nuevas versiones de RAD Studio (acceso al HTML y ejecución de funciones JavaScript), me encontré la clase TWebBrowserEx que realiza todo lo que necesito.
Esta clase realizada por Jun HOSOKAWA es compatible con RAD Studio (desde la versión XE5 -con alguna pequeña corrección- hasta Seattle 10) y con Appmethod (desde la 1.14 a la 1.17).
La clase TWebBrowserEx hereda directamente de TWebBrowser (por lo que será compatible con cualquier aplicativo que se tenga hecho con éste componente) añadiendole ciertas funcionalidades interesantes:
- procedure CallJS: esté método que hace una llamada a una función JavaScript (con o sin parámetros)
- procedure EvaluateJavaScript: éste método ejecuta código JavaScript.
- procedure LoadFromStrings: visualiza el código HTML pasado por parámetro en un string.
- function GetTagValue: functión que devuleve el valor de cualquier tag HTML.
Si bien es cierto que en Seattle 10 tenemos el método EvaluateJavaScript del TWebBrowser, no es así en versiones anteriores y, además, no tenemos la opción de acceder a los elementos del HTML de forma estándar.
Aquí os dejo algunos trozos de código para hacer funcionar esta clase (no costaría demasiado hacerlo componente):
// creation of object FWebBrowser := TWebBrowserEx.Create(Self); FWebBrowser.Parent := Panel2; FWebBrowser.Align := TAlignLayout.Client; // load an url FWebBrowser.URL := 'http://www.cadetill.com/un-repaso-a-lo-nuevo-de-delphi-10-seattle/'; // put a html code directly FWebBrowser.LoadFromStrings('Hello WebBrowser!', ''); // execute a JavaScript code FWebBrowser.EvaluateJavaScript('alert("EvaluateJavaScript method from WebBrowserEx class!")'); // getting a value from id lat := FWebBrowser.GetTagValue('lat', 'value'); lng := FWebBrowser.GetTagValue('lat', 'value'); ShowMessage(Format('lat/lng clicked: %s/%s', [lat, lng])); // execute a JavaScript function into HTML code FWebBrowser.CallJS('MapSetCenter', ['42.51968735985934', '42.51968735985934']);
Además, TWebBrowserEx es de código abierto y está alojada en github.
Puedes descargarte la demo desde este enlace.
Hasta la próxima.
Hello,
Tdcef3 is now compatible with both VCL and FMX libraries.
Is it a great amout of work to update your library and use Tdcef3 ?
Hi Stephane
I can evaluate it for GMLib 2.0, but not for GMLib 1.x
Thanks for the news
Hello,
FWebBrowser.GetTagValue is not work in android platform.
what to do?
You need to ask to the owner of the component. Sorry
How can I enable javascript in TWebView (WebView) for Delphi Berlin