Seite 2 von 2

Re: Spiderbasic Proceduren mit PureBasic ausführen

Verfasst: 06.10.2024 12:02
von Burstnibbler
Hallo dige,

interessantes Thema!
Ich habe bisher noch nie etwas mit dem Webgadget gemacht, also habe ich mich mal rangesetzt und tatsächlich auch eine Lösung gefunden.
Ob es jetzt die beste Lösung ist weiß ich nicht - aber sie funktioniert immerhin. :)

Code: Alles auswählen


Procedure ExternalRaiseEvent(JsonParameters$)
  Debug JsonParameters$
EndProcedure

Procedure GetMarkerDragEnd(JsonParameters$)
  Debug JsonParameters$
EndProcedure

Define.s script

; Script zum Überschreiben der Original-Methode: cP2W.ExternalRaiseEvent()
script = "cP2W.ExternalRaiseEvent = function (EventName, Params) {"
script + "  try {"
script + "    let name = EventName.replace('#','');"; Filter "PB-Konstanten"
script + "    window[name](Params);";Im Original: window.external.raiseEvent(EventName, Params);
script + "  }"
script + "  catch (e) {"
script + "  }"
script + "};"

OpenWindow(0, 100, 100, 400, 400, "Google Map Test", #PB_Window_SystemMenu)

WebViewGadget(0, 0, 0, 400, 400)
SetGadgetText(0, "https://www.dbsthumb.de/livemap/index2.html")
BindWebViewCallback(0, "Debug", @ExternalRaiseEvent())
BindWebViewCallback(0, "PB_EventType_GoogleMapMarker_DragEnd", @GetMarkerDragEnd()) 

MessageRequester( "Warte auf Karte", "Ok wenn fertig")
WebViewExecuteScript(0, script)
WebViewExecuteScript(0, "GoogleMapAddPin(0, 51.0275764465, 13.7329101563, 1, 1);")

Repeat 
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow


Das Problem scheint zu sein, dass die Methode "cP2W.ExternalRaiseEvent()", die Methode "window.external.raiseEvent()" verwendet - welche nur vom IE unterstützt wurde.
Problematisch ist auch, dass in der "map.js" in Zeile 1036, die Variable "MarkerEvent"('PB-Konstanten') als "Evantname" übergeben wird. Besser wäre es, als EventNamen "MarkerInfo" zu übergeben, und das "MarkerEvent" als weiteren Parameter.

.