> Tech > JavaScript orienté objet

JavaScript orienté objet

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

ClientScriptBuilderHelper (via un appel à  sa méthode setAttr) inclut le HTML généré par JavaScript.jsp <RecordFormatName> dans la sortie de PageBuilder.jsp. Chaque JSP JavaScript du format d'enregistrement commence par le même tag jsp :useBean (déclarant un bean IDisplayRecord) comme son JSP partenaire (<RecordFormatName>.jsp). Un JSP JavaScript de non-format d'enregistrement de sous-fichier

JavaScript orienté objet

a, pour
chaque champ, un appel vers une
fonction JavaScript nommée cf (abréviation
de create field). Pour des
formats de sous-fichiers, ces appels de
niveau de champ sont destinés à  scf
(abréviation de subfile create field). Ce
qui suit, par exemple, est l’appel de
fonction cf pour le champ de format
d’enregistrement BEERIN nommé
CATEGORY:

cf("1<%=zOrder%>_BEERIN$CATEGORY",9,5,
{<% if(BEERIN.isMDT0n("CATEGORY"))
{%>mdt:true,<% }%>
check:"ME;",values:"L;A;P;B;W;S;",
datalength:1});

Le HTML généré traduit l’appel de fonction ci-dessus en

cf("11_BEERIN$CATEGORY",9,5,
{check:"ME;",values:"L;A;P;B;W;S;",
datalength:1});

Mais pour comprendre ce que fait ce code JavaScript
généré, je dois vous présenter JavaScript orienté objet
de WebFacing, qu’IBM utilise dans ses routines Client-
Script/webface.js. La figure 3 montre la déclaration de deux
fonctions JavaScript: WFOutputField et WFInputField.
Immédiatement après les déclarations de fonctions vides, on
trouve un ensemble de définitions d’attributs et leurs
paramètres par défaut. Le mot prototype est le nom d’une propriété
pour tous les objets JavaScript ; il est utilisé pour définir
un attribut qui sera disponible avec toutes les instances de ce
type d’objet. Quand le JavaScript webface.js est chargé initialement
dans une fenêtre navigateur WebFacing, il instancie un
objet appelé wfInfoDB avec l’instruction suivante:

var wfInfoDB = new Object() ;

Ensuite, lorsque les fonctions cf et scf provenant du JSP
JavaScript du format d’enregistrement sont traitées pour
chaque champ, des instances des objets WFOutputField sont
créées et leurs références assignées à  la variable wfInfoDB :

wfInfoDB[idStr] = new WFInputField();

JavaScript adapte les types de variables selon leur mode
d’utilisation. Donc, même si wfInfoDB a été créé initialement
pour référencer un objet, dès qu’il est utilisé comme une matrice,
JavaScript morphe wfInfoDB dans un type array. Il est
intéressant de noter qu’on peut indexer les matrices
JavaScript par chaînes. Ainsi, le idStr dans l’exemple précédent
fait référence à  un nom de champ HTML tel que
11_BEERIN$CATEGORY. Notez que vous définissez des
champs en sortie seule avec une fonction JavaScript appelée
rc (abréviation de row/column), et la fonction rc instancie et
assigne les objets WFOutputField aux éléments de matrice
wfInfoDB.

La fonction cf prend une liste de paramètres qui inclut le
nom du champ ainsi que les valeurs ligne et colonne. La fonction
scf prend le nom du champ, mais pas les valeurs de ligne
ou de colonne. Mais le dernier paramètre des deux fonctions
cf et scf est une matrice d’initialiseurs d’objets JavaScript placés
entre accolades. Ces initialiseurs ont la forme <object attribute
name>:<value>. L’exemple suivant est la matrice
des valeurs d’initialiseur prises du dernier paramètre de l’appel
de fonction cf montré précédemment :

{check:"ME;",values:"L;A;P;B;W;S;",
datalength:1}

A noter comment les noms des attributs d’objet correspondent
aux paramètres du prototype WFInputField dans la
figure 3.
Les deux fonctions cf et scf invoquent une fonction
générique appelée crtfld (abréviation de create field). La
fonction crtfld crée l’objet WFInputField, définit les propriétés
WFInputField avec la matrice d’initialiseur, définit l’attribut
dhtml pour référencer le champ d’entrée HTML, puis
modifie la manière dont ce champ d’entrée HTML traite les
événements UI du navigateur. Cela mérite une explication :
les éléments d’entrée HTML peuvent se voir associer des
fonctions JavaScript pour s’exécuter quand l’un quelconque
des événements suivants se produit : onKeyPress, onPaste,
onClick, onSelect, onBlut, onFocus, onMouseOver,
onMouseOut, onMouseUp et onKeyUp.
Le fichier webface.js contient des dizaines de fonctions
JavaScript qui ont été codées pour simuler la fonctionnalité
5250. (Par exemple, handleCHECK_ER, handleDSPATR_SP,
respectMaxLengthOnKeyPress, onPasteUpdateCursorOffset,
checkCharShift.) Et, comme l’un quelconque des événements
GUI du navigateur standard peut avoir à  manipuler
plusieurs de ces appels de fonctions de simulations 5250, la
fonction crtfld utilise une routine appelée addWF-Handler-
OnTop. Comme son nom l’indique, la fonction addWFHandlerOnTop
ajoute du code JavaScript au code qui a déjà 
été défini pour s’exécuter quand un événement UI du
navigateur spécifique se produit.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010