![]() |
Javscript-function aufrufen, wenn function im HTML-header
Hallo,
ich erstelle eine firemonkey app mit einer einfachen google-maps Einbindung. Zusätzlich möchte ich, dass eine function "marker1" auf das Ereignis "Button2.Click" ausgeführt wird. Die function findet sich im header. Die Frage lautet: wie rufe ich eine function auf, die mit jacascript im html-header steht? In der VCL-Version hat es mit HTMLWIndow2 etc. funktioniert, aber nicht in der fmx (firmonkey)-Version.
Delphi-Quellcode:
unit Unit2;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, System.Sensors, System.Sensors.Components, FMX.WebBrowser, FMX.ListBox; type TForm2 = class(TForm) LocationSensor1: TLocationSensor; WebBrowser1: TWebBrowser; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.fmx} uses Unit1; const { Was used sample from } { https://developers.google.com/maps/documentation/javascript/examples/directions-panel } cRoute = '<!DOCTYPE html>' + '<html>' + ' <head>' + ' <meta name="viewport" content="initial-scale=1.0, user-scalable=no">' + ' <meta charset="utf-8">' + ' <title>Displaying text directions with <code>setPanel()</code></title>' + ' <style>' + ' html, body, #map-canvas {' + ' height: 100%;' + ' margin: 0px;' + ' padding: 0px' + ' }' + ' </style>' + ' <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>' + ' <script>' + '' + ' function initialize() {' + '' + ' var latlng = new google.maps.LatLng(39.550189, 2.691211); ' + ' var latlng2 = new google.maps.LatLng(39.551200, 2.691211); ' + '' + ' var mapOptions = {' + ' zoom: 16,' + ' center: latlng, ' + ' mapTypeId: google.maps.MapTypeId.ROADMAP, ' // ROADMAP (GROß geschrieben) + ' };' + ' var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);' + ' var marker = new google.maps.Marker({' + ' position: latlng,' + ' title: "Hello World!"' + ' });' + ' marker.setMap(map);' + '' + '}' + '' + ' function marker1() {new google.maps.LatLng(39.551200, 2.691211)};'// Um diese function geht es <-------------- + '' + 'google.maps.event.addDomListener(window, ''load'', initialize);' + '' + ' </script>' + ' </head>' + ' <body>' + ' <div id="map-canvas" style="width:100%; height:100%"> </div> ' + ' </body>' + '</html>'; procedure TForm2.Button1Click(Sender: TObject); begin form2.close; end; procedure TForm2.FormCreate(Sender: TObject); begin WebBrowser1.LoadFromStrings(cRoute, ''); end; procedure TButton2.Click (Sender: TObject); begin // Was kommt hierhin, um die function marker1 aufzurufen? Die function soll nur ausgeführt werden auf "Button2.Click". <-------------- end; end. Herzlichen Dank. Ich arbeite mich auch gerne ein. |
AW: Javscript-function aufrufen, wenn function im HTML-header
|
AW: Javscript-function aufrufen, wenn function im HTML-header
[DELPHI]...[/DELPHI] kennst du?
HTML-Code:
:stupid:
...</head>
<body onload="marker1();"> <div id=... Aber gut, das wäre dann nicht in Click, sondern im FormCreate. @mkinzler: Also dein Link passt ja wie die Faust auf's Auge. :lol: Zitat:
Lass du mal besser ganz schnell das
Delphi-Quellcode:
verschwinden.
Form2.
|
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
Delphi-Quellcode:
Aber ich habe ja keine const, sondern eine function?
WebBrowser1.EvaluateJavaScript(cChicagoWinona);
|
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
2. Was genau hat es mit dem form2 auf sich? Ist das nicht richtig? |
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
Bitte schau dir das Beispiel genau an (jag es durch den Compiler und schau mit dem Debugger zu, was da passiert) und dann sollte ein Licht angehen ... |
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
|
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
|
AW: Javscript-function aufrufen, wenn function im HTML-header
Den Code der JS-Funktion musst Du in den String schreiben und dann EvaluateJavaScript() übergeben.
Genauso, wie es im Beispiel auch steht. |
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
Delphi-Quellcode:
unit Unit2;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, System.Sensors, System.Sensors.Components, FMX.WebBrowser, FMX.ListBox; type TForm2 = class(TForm) LocationSensor1: TLocationSensor; WebBrowser1: TWebBrowser; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.fmx} uses Unit1; const { Was used sample from } { https://developers.google.com/maps/documentation/javascript/examples/directions-panel } cRoute = '<!DOCTYPE html>' + '<html>' + ' <head>' + ' <meta name="viewport" content="initial-scale=1.0, user-scalable=no">' + ' <meta charset="utf-8">' + ' <title>Displaying text directions with <code>setPanel()</code></title>' + ' <style>' + ' html, body, #map-canvas {' + ' height: 100%;' + ' margin: 0px;' + ' padding: 0px' + ' }' + ' </style>' + ' <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>' + '' + ' <script>' + '' + ' function initialize() {' + ' var latlng = new google.maps.LatLng(39.550189, 2.691211); ' + '' + ' var mapOptions = {' + ' zoom: 16,' + ' center: latlng, ' + ' mapTypeId: google.maps.MapTypeId.ROADMAP, ' // ROADMAP (GROß geschrieben) + ' };' + ' var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);' + ' var marker = new google.maps.Marker({position: latlng,' + ' title: "Hello World!",' + ' animation: google.maps.Animation.BOUNCE,' + ' });' + ' marker.setMap(map);' + ' }' + '' + ' function markerbc() {' <----------------------------- hier die function "markerbc"; stimmt sie so? + ' var latlng2 = new google.maps.LatLng(39.551200, 2.691211); ' + ' var marker1 = new google.maps.Marker({position: latlng2,' + ' title: "Hello aaa!",' + ' });' + ' marker1.setMap(map);' + ' }' + '' + ' google.maps.event.addDomListener(window, ''load'', initialize);' + '' + '' + ' </script>' + '' + ' </head>' + ' <body>' + ' <div id="map-canvas" style="width:100%; height:100%"> </div> ' + ' </body>' + '</html>'; procedure TForm2.Button1Click(Sender: TObject); begin form2.close; end; procedure TForm2.FormCreate(Sender: TObject); const a = 'markerbc()'; <----------------------------- hier die const definiert begin WebBrowser1.LoadFromStrings(cRoute, ''); WebBrowser1.EvaluateJavaScript(a); <----------------------------- hier die function "markerbc" aufgerufen end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz