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