01 décembre 2020
publié par 

Avec le nouveau champ HTML de la version 26, votre projet aura probablement besoin d'interagir avec la page Web Affichée. Un des moyens d'interaction est l'exécution de code JavaScript dans le contexte de la page et d'en récupérer le résultat.

La fonction WLangage à utiliser est ExecuteJS(). On fournit à cette fonction, le code JS à exécuter et une procédure WLangage qui sera rappelée dans le code JS se sera exécuté. C'est ce que l'on appelle une procédure callback.


Voici un exemple de code qui demande à la page affichée quel est le niveau de zoom effectué dans la page (le CTRL+Roulette). Dans la procédure callback, on compare ce ratio d'affichage des pixels à celui en cours dans Windows pour déterminer le pourcentage de zoom.

 

 

// Facteur Zoom à afficher
nFacteurZoom est un entier
// Code JS à exécuter
sCodeJS est une chaîne = [
var Ratio = "";
Ratio += window.devicePixelRatio;
]

// Exécution du code JS
ExecuteJS(HTM_AffichePAge,sCodeJS,DeviceRatioPixel)

 

// Procédure Callbak

PROCEDURE INTERNE DeviceRatioPixel(bSuccès est un booléen, sValeurRatio est une chaîne)

// Ration défini dans Windows
nRatioEcran est un réel = FacteurGrandePolice()
nFacteurZoom = Arrondi((Val(sValeurRatio)/nRatioEcran),2)*100
Info("Le facteur de zoom dans le champ HTML est : "+nFacteurZoom)
FIN

 

Attention, il ne faut pas utiliser l'instruction « return » dans la procédure JavaScript. La fonction ExecuteJS transmet automatiquement le dernier item manipulé dans la procédure. Dans l'exemple ci-dessus c'est la variable chaine Ratio qui sera transmise. La donnée sera toujours transmise sous un format chaîne. A vous de la convertir dans la procédure dans le format voulu.

< Retour

2 commentaires

Alan Baccharetti
01/12/2020 - 15:42 - Répondre
Bonjour, J'ai tendance a utiliser return dans me procedure JS passées ( jusqu'a v25 ). Me conseillez-vous de modifier toutes proc JS pour retirer le return ? Et est ce que cela peut faire échouer les appels JS ? Merci

Loïc HAMEL
08/12/2020 - 11:46 - Répondre
Bonjour, Oui dans mes tests réalisés, cela produit une erreur de syntaxe. Bon développements.

Publier un commentaire : 
Votre adresse email ne sera pas publiée