![]() |
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. |
AW: Javscript-function aufrufen, wenn function im HTML-header
Oder die konkrete Frage:
Was genau muss ich eingeben? Nachdem von meinen Nerven heute nur noch eine einzige Nervenzelle übrig ist und der Tag sich dem Ende neigt, bin ich WIRKLICH für JEDE KONKRETE ANTWORT wirklich SEEEEEEHHHHR dankbar. Ich habe es jetzt den ganzen Tag selbst probiert, LEIDER ohne Erfolg. Danke! |
AW: Javscript-function aufrufen, wenn function im HTML-header
Falls noch jemand da ist, wäre ich um jede Antwort dankbar!
|
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
Code:
Tags packst (du kannst 24h lang deine Beiträge ändern) und auch die vorgeschriebene Zeitspanne von 24h (ob nun 23,5 oder 23 ist auch egal, aber nicht jede Stunde) vor dem Pushen abwartest, wage ich mal zu vermuten, dass die Bereitschaft hier zu helfen gegen 0 sinkt.
[DELPHI]
[/DELPHI] |
AW: Javscript-function aufrufen, wenn function im HTML-header
Ok, ok, Entschuldigung! Lag wohl an meiner einen einzigen Nervenzelle, die noch da ist...
Gute Nacht und danke für die heutige Hilfe. Ich hoffe, ich darf mich nochmal in dieser Sache melden... |
AW: Javscript-function aufrufen, wenn function im HTML-header
Zitat:
|
AW: Javscript-function aufrufen, wenn function im HTML-header
So, nachdem ich jetzt auch verstanden habe, was mit [QUOTE]Delphi [/Delphi][QUOTE] gemeint ist, habe ich alles korrigiert und hoffe, so die Hilfsbereitschaft wieder hergestellt zu haben:-D.
Darf ich also nochmal meine Frage stellen: Was muss ich an diesem Code ändern:
Delphi-Quellcode:
Herzlichen Dank.
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. |
AW: Javscript-function aufrufen, wenn function im HTML-header
Geht doch ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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