WebViewGadget()

Syntax

Ergebnis = WebViewGadget(#Gadget, x, y, Breite, Höhe [, Flags])
Beschreibung
Erstellt ein neues Webview-Gadget in der aktuellen Gadget-Liste. Bei Bedarf kann mit WebViewProxy() ein Proxy eingerichtet werden.

Parameter

#Gadget Eine Nummer zur Identifizierung des neuen Gadgets. #PB_Any kann verwendet werden, um diese Nummer automatisch zu generieren.
x, y, Breite, Höhe Die Position und Abmessungen des neuen Gadgets.
Flags (optional) Flags zum Ändern des Gadget-Verhaltens. Es kann (mit dem Operator '|') aus einer der folgenden Konstanten zusammengesetzt sein:
  #PB_WebView_Debug: Aktiviert den Menüpunkt "Inspizieren" (englisch 'inspect') im Kontextmenü,
                     um den Web-Inspektor und die Konsole anzuzeigen.

Rückgabewert

Bei Erfolg ungleich Null, ansonsten Null. Wenn #PB_Any als #Gadget-Parameter verwendet wurde, beinhaltet der Rückgabewert die automatisch generierte Gadget-Nummer bei Erfolg.

Anmerkungen

Verwenden Sie nach der Erstellung BindWebViewCallback(), um mit dem JavaScript-Code der Benutzeroberfläche zu interagieren. Darüber hinaus können auch gängige Gadget-Befehle wie ResizeGadget() oder HideGadget() mit dem Steuerelement verwendet werden.

Die folgenden Funktionen können verwendet werden, um das WebViewGadget zu beeinflussen:

- SetGadgetText(): Ändert die aktuelle URL. Es kann sich um eine lokale Datei-URL wie 'file://c:/purebasic/svn/webview.html' oder eine reguläre HTTP-URL handeln. Wenn Sie eine lokale Datei-URL verwenden, muss es sich um den vollständigen Pfadnamen handeln. Sie können die lokale URL einfach erstellen, indem Sie 'file://' zum Pfadnamen hinzufügen.

- SetGadgetItemText(): Mit #PB_WebView_HtmlCode als 'Eintrag' kann HTML-Code in das Gadget gestreamt werden. Das HTML wird als nicht vertrauenswürdiger lokaler Inhalt behandelt und einige Berechtigungen sind nicht zulässig.

Beispiel: mit lokalen HTML- und CSS-Dateien

  Procedure IncrementJS(JsonParameters$)
    Static i
    Debug "IncrementJS "+JsonParameters$
    i+1
    ProcedureReturn UTF8(~"{ \"count\": "+Str(i)+ "}")
  EndProcedure

  Procedure ComputeJS(JsonParameters$)
    Debug "ComputeJS "+JsonParameters$
    ProcedureReturn UTF8(~"150")
  EndProcedure

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

  WebViewGadget(0, 0, 0, 400, 400)
  SetGadgetText(0, "file://" + #PB_Compiler_Home + "examples/sources/Data/WebView/webview.html")
    
  BindWebViewCallback(0, "increment", @IncrementJS())
  BindWebViewCallback(0, "compute", @ComputeJS())

  Repeat 
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

Beispiel: mit Inline-HTML-Code

  Procedure IncrementJS(JsonParameters$)
    Static i
    Debug "IncrementJS "+JsonParameters$
    i+1
    ProcedureReturn UTF8(~"{ \"count\": "+Str(i)+ "}")
  EndProcedure

  Procedure ComputeJS(JsonParameters$)
    Debug "ComputeJS "+JsonParameters$
    ProcedureReturn UTF8(~"150")
  EndProcedure

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

  WebViewGadget(0, 0, 0, 400, 400)

  SetGadgetItemText(0, #PB_WebView_HtmlCode, 
                    ~"<button id=\"increment\">Tap me</button>\n"+
                    ~"<div>You tapped <span id=\"count\">0</span> time(s).</div>\n"+
                    ~"<button id=\"compute\">Compute</button>\n"+
                    ~"<div>Result of computation: <span id=\"compute-result\">0</span></div>\n"+
                    ~"<script>\n"+
                    ~"  const [incrementElement, countElement, computeElement, "+
                    ~"computeResultElement] =\n"+
                    ~"    document.querySelectorAll(\"#increment, #count, #compute, "+
                    ~"#compute-result\");\n"+
                    ~"  document.addEventListener(\"DOMContentLoaded\", () => {\n"+
                    ~"    incrementElement.addEventListener(\"click\", () => {\n"+
                    ~"      window.increment().then(result => {\n"+
                    ~"        countElement.textContent = result.count;\n"+
                    ~"      });\n"+
                    ~"    });\n"+
                    ~"    computeElement.addEventListener(\"click\", () => {\n"+
                    ~"      computeElement.disabled = true;\n"+
                    ~"      window.compute(6, 7).then(result => {\n"+
                    ~"        computeResultElement.textContent = result;\n"+
                    ~"        computeElement.disabled = false;\n"+
                    ~"      });\n"+
                    ~"    });\n"+
                    ~"  });\n"+
                    ~"</script>")
    
  BindWebViewCallback(0, "increment", @IncrementJS())
  BindWebViewCallback(0, "compute", @ComputeJS())

  Repeat 
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

Beispiel: mit deaktiviertem Rechtsklick-Menü

  Html$ = ~"<html style=\"margin:0px;height:100%;width:100%\">"+
          ~"<body oncontextmenu=\"return false;\" style=\"margin:0px;min-height:100%;width:100%\">"+
          ~"<button id=\"displayInfo\">Display Info</button>"+
          ~"</body></html>\n"
  
  OpenWindow(0, 100, 100, 400, 400, "No right click UI", #PB_Window_SystemMenu)

  WebViewGadget(0, 0, 0, 400, 400)
  SetGadgetItemText(0, #PB_WebView_HtmlCode, Html$)

  Repeat 
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

Siehe auch

WebViewExecuteScript(), BindWebViewCallback(), WebViewProxy()

Unterstützte OS

Alle

<- WebViewExecuteScript() - WebView Inhaltsverzeichnis - WebViewProxy() ->