BindWebViewCallback()

Syntax

BindWebViewCallback(#Gadget, JavaScriptFunktion$, @Callback())
Beschreibung
Bindet einen PureBasic-Callback an eine neue JavaScript-Funktion. Die JavaScript-Funktion wird automatisch in der Webansicht erstellt und ist im JavaScript-Code verfügbar.
Wenn die JavaScript-Funktion im Webview-Gadget aufgerufen wird, wird der PureBasic 'Callback' aufgerufen. Der JavaScript-Code wird angehalten, bis der PureBasic-Callback seine Ausführung abgeschlossen hat.

Parameter

#Gadget Das Webview-Gadget, an das das Ereignis gebunden werden soll.
JavaScriptFunktion$ Der Name (unter Beachtung der Groß- und Kleinschreibung) der zu erstellenden JavaScript-Funktion, an welche der Callback gebunden werden soll.
@Callback() Die beim Aufruf der JavaScript-Funktion aufzurufende Callback-Prozedur. Diese muss wie folgt deklariert werden:
  Procedure JavaScriptCallback(JsonParameters$)
    ; 
    ; 'JsonParameters$' enthält alle Parameter, die beim Aufruf der JavaScript-Funktion im JSON-Format angegeben wurden.
    ;
    
    ; Code
    
    ProcedureReturn UTF8(JsonResult$)
  EndProcedure
Die Callback-Prozedur kann ein Ergebnis zurückgeben, das von der JavaScript-Funktion verwendet werden kann.

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Anmerkungen

Wenn Ihre JavaScript-Callback-Funktion ein UTF8() generiertes Ergebnis anstelle von 0 zurückgibt, wird PureBasic den zur Rückgabe verwendeten Speicher automatisch freigeben, wenn er nicht mehr benötigt wird.

Beispiel: mit einer 2-Parameter-Javascript-Funktion

  ; Eine einfache Schaltfläche, deren Beschriftung sich je nach Ergebnis des PureBasic-Rückrufs ändert
  ;
  Html$ =  ~"<button id=\"displayInfo\">Display Info</button>\n"+
           ~"<script>\n"+
           ~"  const displayInfoElement=document.getElementById(\"displayInfo\");\n"+
           ~"  document.addEventListener(\"DOMContentLoaded\", () => {\n"+
           ~"    displayInfoElement.addEventListener(\"click\", () => {\n"+
           ~"      window.displayInfo(1000, 2000).then(result => {\n"+
           ~"        displayInfoElement.textContent = result.sum;\n"+
           ~"      });\n"+
           ~"    });\n"+
           ~"  });\n"+
           ~"</script>";
    
  Procedure IncrementJS(JsonParameters$)
    
    Dim Parameters(0)
    
    ParseJSON(0, JsonParameters$)
    ExtractJSONArray(JSONValue(0), Parameters())
    
    Debug "Nb Parameters: " + ArraySize(Parameters())
    
    Debug "Parameter 1: " + Parameters(0)
    Debug "Parameter 2: " + Parameters(1)
    
    ProcedureReturn UTF8(~"{ \"sum\": "+Str(Parameters(0) + Parameters(1))+ "}")
  EndProcedure


  OpenWindow(0, 100, 100, 400, 400, "Hello", #PB_Window_SystemMenu)

  WebViewGadget(0, 0, 0, 400, 400)
  SetGadgetItemText(0, #PB_WebView_HtmlCode, Html$)
    
  BindWebViewCallback(0, "displayInfo", @IncrementJS())

  Repeat 
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

Siehe auch

WebViewGadget(), UnbindWebViewCallback()

Unterstützte OS

Alle

WebView Inhaltsverzeichnis - UnbindWebViewCallback() ->