Satimage Précédent
HTML interfaces (obsolète)
Accueil Documentation Smile Les interfaces utilisateur Interfaces HTML HTML interfaces (obsolète)  

Cette page correspond à l'ancienne documentation. Ce qui y est décrit est toujours valide mais déconseillé.

Comment communiquer avec AppleScript depuis une page HTML
Le HTML peut interagir avec Smile :
  • à l'aide d'un lien HTML tel que :
    <a href="smile://myfunction?mytext">click here</a>
  • à l'aide d'un formulaire HTML (élément de type form) tel que :
    <form method="get" action="smile://myfunction" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
    <input name="refresh" type="submit" value="OK" />
    </form>

    Un tel formulaire peut contenir un nombre quelconque de variables stockés dans des éléments input, select, textarea, etc.

Dans les deux cas, le scheme de l'URL doit être smile, et non http.

Le nom de l'hôte de l'URL (myfunction dans l'exemple ci-dessus) définit quelle fonction AppleScript est appelée : dans ces exemples, une fonction nommée openlocation_myfunction(x, w) est appelée lorsque l'utilisateur click sur le lien ou sur le bouton submit.
Le paramètre w est une référence à la web window d'où vient la requête. Si cette requête vient d'un navigateur et non de Smile, w vaut 0.
Le paramètre x correspond à l'URL complète, par exemple "smile://myfunction?mytext" ou "smile://myfunction?refresh=OK".

La fonction AppleScript openlocation_myfunction(x, w) peut être définie soit dans le contexte de Smile, soit dans le script de la web window.
Pour définir une telle fonction dans le contexte de Smile, vous pouvez :

  • la compiler dans un terminal AppleScript,
  • utiliser la commande add library avc comme paramètre direct un fichier ou un texte contenant la définition de la fonction,
  • utiliser une bibliothèque AppleScript.

Lorsque l'URL vient d'un formulaire HTML, vous pouvez utiliser la commande parseFormURL pour traduire cette URL en un texte Unicode correspondant à une plist, que vous pourrez facilement manipuler avec les commandes sur les plists de XMLLib.osax.

on openlocation_myfunction(x, w)
    msg("url: " & x)
    set p to PlistOpen (parseFormURL x)
    msg(PlistGet p key "refresh")
    PlistClose p
end openlocation_myfunction
-- OK

NB : l'événement pageloaded est envoyé au script de la web window lorsque son chargement est effectué. C'est à partir de ce moment qu'il est possible d'appeler sans problème un javascript du HTML d'une web window que l'on vient de créer (ou qui a été modifiée avec reloadURL ou set contained data ou set path name).

Communiquer depuis AppleScript vers le HTML
Les fonctions AppleScript appelées par le HTML peuvent changer le contenu du HTML de la web window. Il y a plusieurs moyens de faire cela :
  • Vous pouvez modifier le fichier source du HTML et dire à la fenêtre de se recharger, grâce à la commande reloadURL.
  • Vous pouvez charger un autre fichier HTML en changeant la propriété path name de la fenêtre.
  • Vous pouvez changer dynamiquement le contenu du HTML en changeant la propriété contained data à du texte contenant le source du HTML à afficher.
  • Vous pouvez exécuter du javascript dans la fenêtre en utilisant la commande callJavaScript ou appeler une fonction javascript en utilisant la commande callJavaScriptFunction (décrites dans le dictionnaire de Smile).
English version
Copyright ©2010 Paris, Satimage