WebViewGadget()

Syntaxe

Resultat = WebViewGadget(#Gadget, x, y, Longueur, Hauteur [, Options])
Description
Crée un nouveau gadget d'affichage Web.

Arguments

#Gadget Le numéro d'identification du gadget.

#PB_Any peut être utilisé pour générer automatiquement ce numéro.
x, y,Longueur, Hauteur La position et les dimensions du nouveau gadget.
Options (optionnel) Modifie le comportement du gadget :
   #PB_WebView_Debug : Active l'élément de menu contextuel 'Inspecter' pour afficher l'inspecteur Web et la console.

Valeur de retour

Renvoie une valeur non nulle en cas de succès, zéro sinon.

Si #PB_Any a été utilisé comme paramètre #Gadget alors la valeur de retour est le numéro de gadget généré automatiquement, en cas de succès.

Remarques

Si nécessaire, un proxy peut être défini avec WebViewProxy().

Après la création, utilisez BindWebViewCallback() pour interagir avec le code JavaScript de l'interface utilisateur.
De plus, les commandes de gadget courantes telles que ResizeGadget() ou HideGadget() peuvent également être utilisées.

Les fonctions suivantes peuvent être utilisées pour agir sur un WebViewGadget :

- SetGadgetText() : Modifie l'URL actuelle. Il peut s'agir d'un URL de fichier local tel que "file://c:/purebasic/svn/webview.html" ou d'une URL HTTP standard. Lors de l'utilisation d'un URL de fichier local, il doit s'agir du chemin d'accès complet. Vous pouvez facilement construire l'URL local en ajoutant 'file://' au chemin d'accès.

- SetGadgetItemText() : Avec #PB_WebView_HtmlCode comme 'élément', le code HTML peut être diffusé (streamé) dans le gadget. Toutefois, le code HTML est traité comme un contenu local non fiable et certaines autorisations ne sont pas autorisées.

Exemple: Utiliser des fichiers HTML et CSS locaux

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

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

  OpenWindow(0, 100, 100, 400, 400, "Salut", #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

Exemple: En utilisant du code HTML en ligne

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

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

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

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

  SetGadgetItemText(0, #PB_WebView_HtmlCode, 
                    ~"<button id=\"increment\">Cliquez moi !</button>\n"+
                    ~"<div>Vous avez cliqué <span id=\"count\">0</span> fois.</div>\n"+
                    ~"<button id=\"compute\">Calculer</button>\n"+
                    ~"<div>Resultat du calcul: <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

Exemple: Avec menu contextuel désactivé

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

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

  Repeat 
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

Voir aussi

WebViewExecuteScript(), BindWebViewCallback(), WebViewProxy()

OS Supportés

Tous

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