. Ing. Fbrz Frvn, Ph.D. Ing. Mrus Spnu, Ph.D........... Jvscrp Smbr 2001
1. JAVASCRIPT: LE ORIGINI... 4 JAVASCRIPT E JSCRIPT... 4 2. ASPETTI E CARATTERISTICHE GENERALI... 6 VANTAGGI E SVANTAGGI... 7 LE DIVERSE VERSIONI... 8 VERSIONI JSCRIPT E JAVASCRIPT... 8 DHTML... 8 3. I PRIMI RUDIMENTI DEL LINGUAGGIO... 10 TAG <SCRIPT>... 10 RICHIAMO DEGLI SCRIPT... 10 Scrp Esrn... 11 Scrp Inrn... 11 BROWSER NON COMPATIBILI... 12 COMMENTI E PUNTEGGIATURA... 12 Cmmn... 12 Spz Bnch... 13 Apc... 13 ISTRUZIONI... 13 Blcch d sruzn (csru squnz)... 13 Mdlà d scuzn... 14 4. GLI EVENTI... 15 ATTIVARE GLI EVENTI ALL INTERNO DEGLI SCRIPT... 15 RAGGRUPPARE GLI EVENTI... 16 EVENTI ATTIVABILI DAI TASTI DEL MOUSE... 16 Vrsn cmpblà... 16 Vlr ru fls... 17 EVENTI ATTIVABILI DAI MOVIMENTI DEL MOUSE... 23 Tg Snsbl... 23 Rllvr... 28 EVENTI ATTIVABILI DAL TRASCINAMENTO DEL MOUSE... 28 Tg Snsbl... 29 EVENTI LEGATI ALLA TASTIERA... 29 Tg Snsbl... 29 Ts Inrcbl... 30 EVENTI LEGATI ALLE MODIFICHE... 30 Tg Snsbl... 31 EVENTI LEGATI AL "FUOCO"... 32 Tg snsbl... 32 EVENTI DA CARICAMENTO DEGLI OGGETTI... 33 Tg snsbl... 33 EVENTI DAL MOVIMENTO DELLE FINESTRE... 35 Tg snsbl... 35 EVENTI DA TASTI PARTICOLARI... 36 Tg snsbl... 36 5. VARIABILI, ESPRESSIONI E OPERATORI... 38 VALORI LETTERALI... 38 CARATTERI SPECIALI... 38 ESCAPE ED UNESCAPE... 39 DICHIARAZIONI VARIABILI... 39 IDENTIFICATORI... 40 PAROLE CHIAVE... 41 TIPI DI VARIABILI... 41 LIFETIME DEI DATI... 42 PASSAGGIO DEI DATI... 43 ARRAY... 44 2
OPERATORI... 44 PRECEDENZA DEGLI OPERATORI... 47 ESPRESSIONI AL VOLO... 48 6. FUNZIONI... 49 7. ISTRUZIONI CONDIZIONALI... 52 IF, IF...ELSE E SWITCH... 52 FOR E FOR IN... 53 WHILE... 54 DO... WHILE... 54 BREAK E CONTINUE... 54 8. IMPARARE TRAMITE GLI ESEMPI... 56 APRIRE UNA NUOVA FINESTRA... 56 MESSAGGI SULLA STATUS BAR... 58 PASSWORD IN JAVASCRIPT... 64 CONTROLLO DATI INSERITI IN UN FORM... 67 PROTEGGERE IL CODICE SORGENTE... 69 3
1. Jvscrp: l rgn Il Wrld Wd Wb s è svlupp grz ll pssblà d pr vsulzzr l grfc l mulmdlà n r. Msc, l prm brwsr, vnn rlsc nl 1992 prmv d vsulzzr l grfc lr l s; nl 1994 pr dgl svluppr d Msc fndrn l Nscp Cmmuncns Crprn l lr brwsr s rvlò bn prs d qulà suprr, n ch svlupprn Jvscrp ch vnn mplmn pr l prm vl sull vrsn b d Nscp Nvgr 2.0 nl gugn 1995. Tl lngugg pprò un nvl cmbmn ll pgn HTML, prcò lcun ff, ch rn rlzzbl sln cn l'nrfcc CGI, dvnrn pù fcl d ffurs l sss dnmcà nn rsò pù lm ll sl gf nm. Il 1995, nlr, rs un pr mlr nll svlupp d Inrn prché ccn Nscp nch un'lr scà slv ll rbl, grz l prvdn nvsmn sull pnzlà dl Wb: l Sun Mcrsysms Inc., ch vv prsn qulch ms prm Jv, l lngugg vlu ch s prpnv d dvnr un sndrd nll cmunczn n r. JvScrp è s cr grz d un sr cllbrzn r Nscp Sun Mcrsysm, d è vv, qund, ch l cmprnsn d un l lngugg nn pss prscndr d Jv. E bn prcsr ch JvScrp è cs ml dvrs d Jv. Enrmb lngugg sn rn gl gg, m mnr Jv è us pr crr pplczn unm ppl, JvScrp vn nrpr nsm l cdc HTML (dl qul è pr ngrn, snz l qul nn può ssr), snz ncssà d mcchn vrul cnscnz pprfnd d mdll rn gl gg. I du lngugg hnn n cmun pr dll snss dll sruur m srbb mpssbl, sl pr fr un smp, crr un prgrmm rpp cmplss n JvScrp. JvScrp, qund, s rvlg gl svluppr d s wb ch nndn nr rsul pprzzbl snz ncssà d mprr cmplss lngugg d prgrmmzn. Cm u lngugg d prgrmmzn rn gl gg, JvScrp sblsc un grrch d gg ch cnsn d dfnr cn szz prprà lrmn ndfnbl. Gl gg prncpl n Nsscp sn: wndw, dcumn, hsry, lcn nvgr. Tl gg sn cllg r lr d rlzn sruurl dl p: Ogg1.gg2.prprà2 Ogg1 è l lvll pù l, gg2 è un prprà d gg1 prprà2 è un prprà d gg2 JvScrp s cmpn d lmn d prgrmmzn qul: rgmn, gsr d vn, funzn, lrl, sprssn, md, gg, prr, prprà, sruzn, vlr vrbl. Nll prc JvScrp cnsn d rrcchr dcumn HTML cn scrp pù mn cmplss pù mn ul. L prur d fnsr ndpndn d qull prncpl dl brwsr è un dll pculrà d JvScrp, ch lr dr smp prc cnsn d dfnr pprfndr lmn cncul. Qulcun s prà chdr cs fcv l Mcrsf? Ebbn, n qul prd vnv dsrbu Inrn Explrr 2.0, ch s prsnv crn s dvrs pun d vs, rvlv cm qull scà fss ml scc n qus cmp. Tr Jvscrp Jv s pns ch c sn vr sp n cmun, lr d un nm ml sml, m l dffrnz sn n pch, scnd pun d vs. Innnzu l prm m d sfr è prpr nl nm, n qun Jvscrp, ll su prm pprzn s chmv LvScrp, pr l prlllsm cn LvWr, un lngugg ch l sss Nscp vv mss pun pr l gsn dll prgrmmzn dl l srvr, m du lngugg, ffrms cnmprnmn, nn pvn ch vr 'v prlll, d nf, nl dcmbr dl 1995 l Nscp l Sun nnuncrn d cllbrr ll svlupp d LvScrp, ch prs l nm ul d Jvscrp. Jvscrp Jscrp Nl 1996, prò, l Mcrsf nzò msrr un grnd nrssmn pr l Wb qund s vnzò l'ps ch pr Nscp grn fssr rm cn, uv l l, bnché mpr, s prsnò pù dur dl sl n qun Nscp crscv, nch s lnmn, su bs sld, su un brwsr ch nscv gà pn, mnr Explrr rvlv u df d un brwsr n n fr cn srg 4
spss cnrs dll'vdnz d f. In qus'ulm cs è mblmc l nv dll Mcrsf d cnrpprr Jvscrp un vrsn rd dl Vsul Bsc ch prs l nm d VBScrp, m l su cpcà s prsnrn lm d dvrs bug. L Mcrsf cn Inrn Explrr 3.0 dv rpgr vrs l'dzn d un lngugg ch d f r ml sml Jvscrp, m ch pr sgnz d cpyrgh, nn pv vr l sss nm, pr cu fu dfn JScrp. L'nrduzn Jvscrp è smbr mprn prché n qus sr, nch s pprnmn l du scà dchrn d sgur gl sndrd dll ECMA-262, l gurr cnnu gcrs clp bss, s nn s rvc un pc d sr, dffclmn s rsc cmprndrn l mvzn nrnsch, dffclmn s rsc cmprndr nch prché n Il l 70% d nvgr ulzz Explrr, mnr ngl USA, dv nl 1995 l Wb r n pn splsn, qus cfr scnd pc pù dll mà. Pr qus mv s cpsc cm Nscp r pc l'nzn d clr ch s sn vvcn ngl ulm mmn d Inrn ddrur l pssn gudcr nfrr d Explrr, m bsgn cmprndr cm qus scà, ffvmn n dffclà, s dfndnd cò ch fnr h f d bun, r cu l sss Jvscrp, l'ulzz d vrsn prcdn d qul brwsr s rvln ncr ffcn sbl, mnr l Mcrsf h dvu clssr l su. L vr nvà nrd d Mcrsf d Nscp crn cnnu dsrnmn spss s prd d vs l vr frz d Jvscrp: l cmpblà cn brwsr nch pù d. Un s prgrmm n HTML n Jvscrp (nll su vrsn 1.1 m nch 1.2) scurmn srà vsbl d qus l 90% d nvgr ( l cfr è dsn slr). 5
2. Asp crrsch gnrl Jvscrp è ml smplc d mprr pr ch gà cnsc lngugg sml cm l C++ Jv, m nn è nnch dffcl pr ch s vvcn pr l prm vl qus lngugg, d l su smplcà snc mnggvlzz. Tuv cò può rpprsnr un'rm dpp gl prché l smplcà s gc nch su un dspnblà lm d gg qund lcun prcdmn, ll'pprnz ml smplc, rchdn scrp bbsnz cmplss. Qund, cn l nsr nvgr, lggm un dcumn HTML gl gg prsn nll pgn (d ndvdubl grss md d vr TAG) sgun un cr grrch d nrprzn. Cè, l brwsr, l lgg cn scrupls rdn prdfn c ffr l rsul fnl ll nsr vs. E', prpr sgund qus grrch ch n pssm, cn JvScrp, nrvnr su gnun d qus gg HTML, cmbnd, pcmn dl prgrmmr, l crrsch. Gl gg l lr grrch d nrprzn sn rssun nll sgun bll. L grrch prsn nn s dv nndr cm dfnv pché gn vrsn d brwsr prbb ggungr lmnr lmn. Anch n qus dcumn prbbr ssr c gg nn prsn nll grrch spr prsn. L crrsc prncpl d Jvscrp, nf, è qull d ssr un lngugg d scrpng, m spru è l lngugg d scrpng pr ccllnz crmn qull pù us. Qus prclrà cmpr un nvl sr d vngg svngg scnd l'us ch s n dv fr nnd n cnsdrzn l rppr ch s nsur nl mccnsm cln-srvr. Spgnd n prl ml smplc qus'ulm rppr, pssm dr ch l srvr nv d l cln qus d pssn rrvr n du dvrs frm: n frm s ( ASCII) n frm bnr ( cdc mcchn). Il cln s cmprndr sl l frm bnr (cè l squnz d 1 0), pr cu s d rrvn n qus frm dvnn mmdmn sgubl ( purrpp snz l pssblà d ffur cnrll), mnr s l frm è dvrs dvn ssr nrpr rd n frm bnr, qund l cln h bsgn d un flr mgl d un nrpr ch spp lggr qus d l pss rdurr n bnr. I d n frm s sn vsbl ll'un cm smplc cmbnzn d crr d prl, qund d fcl mnplzn, m rchdn pù mp pr l lr nrprzn cus d pssgg dll rsfrmzn ch dvn subr pr ssr cmprs dl cln; d n frm bnr, nvc, sn d dffcl (mpssbl) cmprnsn d pr dll'un, m mmdmn sgubl dl cln, snz rchdr pssgg nrmd. Effu qus prmss lngugg d sl ulzz pr l Wb s pssn suddvdr n qur plg: 1. HTML: è n frm s nn è un lngugg nl sns rdznl, m un mpgnr pr cnsn d psznr dgl gg nll pgn cn l crrsch ndc, nurlmn pr l su pculrà rsul ssr sc nn nrgsc cn l'un nn può prndr dcsn s nn pr frmulr, mnr pr l su nrprzn h bsgn d un brwsr; 6
2. lngugg cmpl: sn qu lngugg bbsnz cmplss n cu l srgn (un fl d s cn l przn d sgur) vn cmpl n cdc mcchn vn mpcch n un sgubl ulzzbl sl nll frm pr l przn pr cu è s prg; 3. lngugg smcmpl: n rlà qus clss pprn sl Jv prché è un lngugg cmpl n un frm nrmd r l fl ASCII l fl bnr, l frm s chm bycd v nrpr sul cln d un mcchn vrul chm Jv Vrul Mchn, n l md ll' dll rczn l mcchn cmpl l cmplzn rnd l fl sgubl; 4. lngugg nrpr: sn qu lngugg ch rsuln ml sml ll'html, m hnn pnzlà mggr prché cnsnn d ffur cnrll przn cmplss, vngn nv n fl ASCII, qund cn cdc n chr ch vn nrpr d sgu rg pr rg dl brwsr n mdlà runm. Il cnc d scrp è bn sprss cn un smludn d Mchl Mncur. Scrp n ngls sgnfc "cpn" "scnggur", d, nf, l'ulzz è prpr qus: l brwsr lgg un rg, l nrpr l sgu, p pss ll succssv f l sss cs, csì d sgu fn ll chusur dll scrp. Vngg svngg Qul sn vngg gl svngg r lngugg d scrpng lngugg cmpl? Crchm d rssumrn qulcun: l lngugg d scrpng è pù scur d ffdbl prché n chr d nrprr, qund può ssr flr; pr l sss Jvscrp l scurzz è qus l, prché sl ll su prm vrsn rn s sgnl dl CIAC (Cmpur Incdn Advsry Cmm) d prblm d lv nà, r cu l lur dll cch d s vs, dll'ndrzz -ml d fl prsn su dsc, l "fll", prò, sn s crr gà cn l vrsn d Nscp succssv ll 2.0; gl scrp hnn lm cpcà, pr rgn d scurzz, pr cu nn è pssbl fr u cn Jvscrp, m ccrr bbnrl d lr lngugg vlu, mgr pù scur, cm Jv, l lmzn è ncr pù vdn s s dsdr prr sull'hrdwr dl cmpur, cm d smp l "sgg" n umc dll rsluzn vd l smp d un dcumn; un grss prblm è ch l cdc è vsbl può ssr l d chunqu, nch s ul cn l lgg dl cpyrgh, m qus è l przz d pgr d ch vul ulzzr l wb: l qusn d dr d'ur è s rvluzn cn l'vvn d Inrn (s vd spru l'mp3), l ul è ml lbl ndgu ll lgg ul, pr cu ccrr prndr l suzn cn ml flsf; l cdc Jvscrp vn sgu sul cln pr cu l srvr nn è sllc pù dl dvu; un scrp sgu sul srvr, nvc, sprrbb qus d un dur sllczn srvr d cpcà pù lm n prbbr rsnr s nrrg d pù un; l cdc dll scrp dv ssr scrc cmplmn prm d pr ssr sgu, qus è l rsvl dll mdgl d qun d prcdnmn, pr cu s d ch un scrp ulzz sn nssm (d smp un rccl d czn d msrr n mnr csul), cò cmprrbb un lung mp d scrcmn, mnr l'nrrgzn dll sss dbs sul srvr srbb pù rpd. 7
L dvrs vrsn E' s f l'ccnn ll'emca, pr cu è d'bblg un pprfndmn, nch prché nn bbm m rv rfrmn nll gud Jvscrp n ln cnsul fnr, m spulcnd r qull uffcl, nn mncv m un'ndczn qus ssczn. Innnzu l'ecma (rducnd fdlmn) è un'ssczn nrnznl d ndusr bs sull'eurp, fnd nl 1961, ddc ll sndrdzzzn d ssm d cmunczn d nfrmzn. Pr ch vlss sprn d pù l s è: hp://www.cm.ch. Adrscn ll'ssczn n qulà d mmbr rdnr scà cm l sss Nscp Mcrsf, l Sun, l'ibm, l Cmpq, l Phlps, l'hwl-pckrd, l'inl, mnr sn mmbr ssc lr scà cm l Msubsh Elcrc, l Qunum, l Rckwll. Nscp Cmmuncns prsnò Jvscrp ll ECMA pr l sndrdzzzn nll'uunn 1996. L'Assmbl Gnrl dll'ecma h d l lngugg cm sndrd nl gugn 1997. L vrsn prsn r l 1.1, pr cu è qus d ssr gudc sndrd pr l mv dfn ECMAScrp ECMA-262 (l dcumnzn cmpl è rprbl prss l s dll Nscp hp://dvlpr.nscp.cm/dcs/mnuls). Vrsn JScrp Jvscrp JScrp d Mcrsf nll su vrsn 3.0 (vld pr Explrr 4.0), qund, mplmn cmplmn l'ecmascrp, m ggung nch u l crrsch d Jvscrp 1.2. Crchm, cmunqu, d dr un bll cmprv r brwsr vrsn d Jvscrp JScrp, l bll srà ulssm nch n sgu: Jvscrp Jscrp 1.0 1.1 1.2 1.3 1.0 3.0 5.0 Nscp 2.0 Nscp 3.0 Nscp 4.0 Nscp 4.06 Explrr 3.0 Explrr 4.0 Explrr 5.0 DHTML Tuv ccrr cnsdrr ch nll ulm vrsn d brwsr, spru d pr d Mcrsf, s è nrd l DHTML: s s dvss dr un dfnzn d qus lngugg, srbb un'mprs. Abbm spulc r l dcumnzn uffcl dll Mcrsf, m smbr ch nch lr bbn l d cnfus: n un FAQ ll dmnd prcs "Ch cs è DHTML", u s dc rnn ch l rsps. L nsr pnn è qus: JScrp r vncl d un sndrd, VBScrp r rm supr nll'mplmnzn l cln, l Mcrsf h r fur dl clndr qus prd ch s prsn cm un HTML vnz, prché nsrsc l sruur DOM (Dcumn Objc Mdl) vvr, l mdll d dcumn d gg n cu l dcumn vn dvs n lmn pù smplc cu s pplc un prgrmmzn rn gl gg. DHTML h nrd dvrs nvà nll prgrmmzn cln d un pgn wb, d è crmn un srumn pn, nz, ml pn, n d rsulr qus ncnrllbl. 8
Un gnrc DOM è prsn nll fgur ssn: Wndw vn frms lcn hsry nvgr scrn dcumn Frm[] Plugn[] Appl[] Anchr[] Ar[] Img[] Lnk[] Lyr[] Txr Tx FlUpld Psswrd Hddn Subm Rs Rd ChckBx Bun Slc Opns[] 9
3. I prm rudmn dl lngugg TAG <SCRIPT> Dp vr prl n gnrl dgl scrp, ccrr pssr ll prc vdr cm nsrrl nll pgn HTML. L spgzn rsul bbsnz cmplss spru prché Jvscrp rm s ngr csì bn n HTML d nn vr pù spz dfn, m è pssbl rvrl vunqu. L'HTML prvd un g pps pr gl scrp, l g é: <SCRIPT><! cdc //--></SCRIPT> s nrnn nch d smbl ll'nrn d g, pr l mmn ccnnm sl dr ch hnn un lr ulà, s spghrà p qul è. Tl g, pssn ssr n numr vrbl, l'unc nzn s nl chudrl gn vl ch vngn pr. I brwsr rcvn l pgn HTML cn u l cnnu, qund s ncnr l g <SCRIPT> qus vn sgu cm u gl lr g, dll'l n bss, m l su cnnu è nrpr scnd un cdc dvrs: n l md s l brwsr cmprnd l cdc, qus vn sgu, s s ncnr un rrr nll'scuzn dll sss cs sn du: l pgn vn vsulzz, m l cdc rr nn vn sgu; s l cdc gnr un lp (cé un ccl nfn) l pgn rs bnc vsulzz przlmn prché l'scuzn dll'l n bss dl cdc HTML è mmnnmn nrr. Csì cm scr, prò, l g <SCRIPT> nn è cmpl prché lngugg d scrpng sn dvrs, llr ccrr mr nch l spcfczn dl lngugg d è: <SCRIPT Lngug="Jvscrp"><!-- cdc //--></SCRIPT> Cò prbb bsr, m ngl ulm rfrmn, spru d pr d Nscp, s cnsgl vvmn d ndcr nch l vrsn d Jvscrp ch s dpr, spru prché l'vluzn dl lngugg è cnnu nn smpr sscur l cmpblà cn vcch brwsr. In l md s ccul l cdc brwsr ch nn pssn gsr gl ggrnmn dl lngugg (pr l vrsn d Jvscrp s fcc rfrmn ll bll prcdn). All luc d qun d, l prcdn scrp può ssr cnsdr vld pr l vrsn 1.0 d Jvscrp, qund pr u brwsr, mnr un scrp dl gnr: <SCRIPT Lngug="Jvscrp1.2"><!-- //--></SCRIPT> dvn lggbl sl d Nscp 4.0 Explrr 4.0 dll lr vrsn succssv. V chdr nch cm fr cnscr u l cmpblà: bbn nn c'è nssun prgrmm ch u n cò, ccrr cnscrl fnd ppur usr un md mprc: sr l pgn su dvrs brwsr sgnlr l ncmpblà, s qus dpndn dll vrsn d Jvscrp, mschrrl cn l'ndczn dll vrsn. Rchm dgl scrp In ln d prncp un scrp può ssr nsr n du md ll'nrn d pgn HTML (un'cczn è rpprsn dgl scrp dl srvr cr cn LvWr): nsrnd l cdc nl dcumn; crcndl d un fl srn. 10
l'us dl fl srn, nf, è d dl lm d dmnsn d 32K ch dv rspr un pgn wb. Scrp Esrn In qus'ulm cs (è nch qull pù smplc spgrs) l scrp è slv n un fl cn snsn.js. Vn rchm cn l'rbu SRC dl g SCRIPT: <SCRIPT Lngug=Jvscrp SRC="nmfl.js"><!-- //--></SCRIPT> dv l spcfczn d Lngug è fclv, pché l sss snsn dl fl bs dmsrr l lngugg dpr, m s cnsgl prpr pr dnfcr l vrsn. Il nm dl fl può ssr ndc cn un URL rlv sslu. Tl fl srn vn sgu ll'nrn dll pgn HTML, pr cu l scrp vn sl l cm fl d s, rsfr nll'html nll pszn d rchm qu sgu. Pr l mv l fl v slv cm s ASCII, snz crr d cnrll snz g HTML lmn d lr lngugg pr nn gnrr rrr, s può dprr un qulss dr ml smplc. Il vngg d usr fl srn è mmns spru prché ppr l crrsc dll mdulrà pr cu un scrp ch rcrr d frqun può ssr scr un sl vl rchm n qulss pgn HTML qund srv, m u cò h un przz: funzn sl cn Nscp 3.0 d Explrr 4.0 nll vrsn succssv. Esmp 1.Scrvr cn Blcc N l sgun cmnd: lr('sn un fl srn'), slvrl cn l nm prv.js; 2. Scrvr n un lr fl l sgun cdc HTML: <HTML><HEAD> <SCRIPT SRC="prv.js"> </SCRIPT></HEAD> <BODY></BODY></HEAD></HTML> slvrl nll sss drcry dl fl Jvscrp cn snsn hml hml; 3.Crcr l pgn HTML n un brwsr. Scrp Inrn S l scrp è ll'nrn dl dcumn, può ssr mmss s nll szn d nszn (r g <HEAD></HEAD>) s n qull dl crp dl dcumn (r g <BODY></BODY>). Occrr nr prsn ch l pgn HTML vn sgu n rdn squnzl: dll'l n bss, pr cu l dffrnz r l du lrnv ss: l scrp dll'nszn vn crc prm dgl lr, qull nll szn bdy, nvc, vn sgu scnd l'rdn d crcmn. Ch cs cmb u cò? Bsgn cnsdrr ch un vrbl qulss lr lmn d Jvscrp può ssr rchm sl s crc n mmr: u cò ch s rv nll'nszn è qund vsbl gl lr scrp, qull ch s rv nll szn BODY è vsbl gl scrp ch l sgun. L scl dpnd nch d lr fr (cm l crzn dll pgn HTML n mnr dnmc), m srà p l'sprnz suggrrl. Esmp 1. Scrvr l sgun cdc HTML: <HTML><HEAD> <SCRIPT Lngug="Jvscrp"> x=1; lr('testa='+x); </SCRIPT></HEAD> <BODY> <SCRIPT Lngug="Jvscrp"> x++;lr('corpo='+x); </SCRIPT> <SCRIPT Lngug="Jvscrp"> 11
x++;lr('corpo='+x); </SCRIPT> </BODY></HEAD></HTML> 2.Prvr l cdc vrfcr l squnz d scuzn dgl scrp Brwsr nn cmpbl Prbbr ssr ulzz nch brwsr nn cmpbl cn Jvscrp ppur qull n cu Jvscrp è dsbl (è pssbl cn Nscp). In qus cs c vn n u l g <NOSCRIPT> </NOSCRIPT> ch può cnnr s grfc lrnv ppur un rndrzzmn n pgn sch, ch nn dprn Jvscrp, mdn l squnz: <NOSCRIPT> <META HTTP-EQUIV REFRESH CONTENT="0; URL=lrpgn.hm"> </NOSCRIPT> Cmmn punggur Cmmn I cmmn sn pr dl prgrmm ch nn sn l dll'nrpr ch, qund, srvn spgr chrr. Qus sn rcchus r brr srsch cm nll'smp s rpr: /*cmmn*/ Il cmmn può ssr ps su pù rgh su un rg sngl, mnr nn è cc dll'nrpr l cmmn nnd. Un lr p d cmmn è l dpp brr, prs prs dl lngugg C++, m è vld sl pr cmmn ps su un sngl rg, nch s nn l ccupn pr nr: n x: //cmmn I cmmn Jvscrp nn pssn ssr nsr l d fur d g ch ndvdun l scrp, lrmn HTML l cnsdrrà cm pr dl s, vcvrs nn s pssn ulzzr g d cmmn HTML ll'nrn dll scrp. L'unc cmmn mmssbl è qull ch cnsn d rcchudr u gl scrp n g d cmmn d HTML, fcndl prr dp l g d scrp chudr prm dll chusur dl g: <scrp lngug="jvscrp"> <!-- lr("wlcm!"); //--> </scrp> n l md s mschr l cdc jvscrp vcch brwsr ch nn l lggn s v ch l'html l pss cnsdrr cm s, qund, vsulzzr. Tuv ccrr nr prsn du ccrzz: lcun brwsr nn rcnscn l cmmn vsulzzn l scrp; lcun brwsr, spru Nscp nll vrsn pù vcch, hnn dffclà gsr l sgn > d fn cmmn, pr cu cnvn psznr nch un cmmn Jvscrp (//) prm dll squnz -->. 12
Spz Bnch Jvscrp nn bd gl spz bnch, rnn ch pr qull ch s rvn nll srngh, pr cu s pssn mr nch umnr. Il lr us, uv, cn l'dnzn umn l lggblà dl prgrmm pr cu sn vvmn cnsgl. Apc Imprn sn gl pc, s sngl (' ') ch dpp (" "). I dpp pc s dprn pr rcchudr pr d cdc Jvscrp,, nsm qull sngl, rcchudr nch l srngh (squnz d crr), pr cu ccrr fr nzn d nndr du srngh rcchus d pc sml, cm d ulzzr dpp pc pr l srngh s qus gà srvn rcchudr cdc Jvscrp. S s dsdr ch n un srng ppn pc dpp sngl cm pr ngrn dll srng sss, s fnn prcdr d un brr rvsc (\). Un dgl rrr ch s cmm d frqun, è prpr qull d nn ulzzr crrmn gl pc. Ad smp l cmnd: lr('qus s ' n csruzn') smbr ssr scr crrmn, m s sgu, l brwsr n blcchrà l'scuzn. Nscp msrrà qus rrr: mssng ) fr rgumn ls. lr('qus s ' n csruzn') pù lcnc Explrr, ch ndc sl: Prvs')'. S prsgurà lr, m l'rrr nn srà crr fnché nn s scrvrà lr('qus s \' n csruzn') Isruzn L sruzn hnn l rspnsblà d cnrllr l fluss d lbrzn dl cdc. Ess pssn: sgur rzn, cè rpr un pr d cdc pr un cr numr d vl; sgur dcsn cndzn; rchmr funzn (s vdrà n sgu cs sn); cnsnr l prcrs dll'scuzn d ssr mdfc dnmcmn. In Jvscrp gn sruzn nz d gn nuv rg cn l pun vrgl, cm ccd cl C cn Jv, m cnsgl vvmn d mprr d ulzzr pun vrgl, nn n pr cmpblà cn gl lr lngugg, qun pr vdnzr mgl csru. Esmp 1. Indvdur l sruzn nl sgun cdc: <SCRIPT Lngug="Jvscrp"> x=1;lr('prova'); x++ lr(riprova);y=x </SCRIPT> 2.L sruzn sn cnqu. Blcch d sruzn (csru squnz) Un'sruzn cmps, nvc, è frm d un grupp d du pù sruzn ch frmn un grupp lgc, nl sns ch l'scuzn dll sss è lg, d smp, l vrfcrs d un cndzn: l sruzn sn rggrupp n blcch ndvdu dll prns grff. 13
Mdlà d scuzn Dp vr vs l frm rdznl d nrfccmn dl cdc Jvscrp cn l cdc HTML, ffum un rssun d vr cnc rsp qus rgmn. Qus pr prbb pprr un pc fums prché ndrà ml pr vl pndrc, n qun l r frà l pr d ln, m ch nrssn, qus cnc pssn ssr rprs n sgu crmn pprrnn pù chr. L sruzn n Jvscrp pssn ssr sgu n dvrs md: ll'nrn dgl scrp, ndvdu d g <SCRIPT>, n mnr squnzl, pr cu l'scuzn è umc; crcndl d fl srn; n sgu ll'vzn d un vn (hndlr) cm un clck dl mus l prssn d un s (s vdrnn n sgu gl vn); n lug d un lnk ( prr d Nscp 3.0) nll frm: <A HREF="Jvscrp:cmnd"> vlr Jvscrp pssn ssr rchm dnmcmn dll'html ncludndl r crr &{ ;% d smp l lrghzz d un bll può ssr rcv n rppr d un vlr jvscrp nll frm wdh="&{brwdh;%" lgcmn l'ulzz dll qur pzn vr scnd l'bv d rggungr. Csì s l cdc Jvscrp v sgu n mnr squnzl bs nsrr un scrp, mnr s v sgu n sgu l rlzzrs d un vn, ccrr prr cn un hndlr cmbn d un funzn. Esmp 1. Scrvr l sgun cdc nr cm gl scrp vngn sgu n sgu qul vn: <HTML><HEAD></HEAD> <BODY> <SCRIPT Lngug="Jvscrp"><!-- lr('scrp'); //--></SCRIPT> < hrf="#" nmusvr="lr('h pss l mus')">pss l mus</> < hrf="jvscrp:lr('h clcc')">clcc qu</> </BODY></HTML> 14
4. Gl vn Innnzu ccrr fr un prmss: nl dcdr l'rdn dgl rgmn d rr rvm bbsnz ndcs n qul pszn prr qus rgmn, qull d ss cllg, n qun n lcun s gl vn sn r prm dll funzn, mnr n lr dp. L scl nn r ndffrn prché l'rgmn cmpn un pr bbsnz crps dll r Jvscrp, s ps n un pszn sbgl, rsch d rmpr l squnzlà dll rzn. P bbm p pr l pszn ul n qun l'rgmn è ml ffn ll rzn dgl Scrp n gnrl, m sm cscn d rschr d rndrc pc cmprnsbl nf, pr cu vgln qus pprndr qun sps d sgu dnd pr scn lcun ffrmzn, spru sull funzn ffrnnd lcun smp fclzznd prclrmn l'nzn sull'us dgl hndlr. Gl vn sn ulzz pr rchmr dll sruzn. Inf, l scrp v sgu n mnr squnzl, m pr fr n md d nsrr l dnmcà l'nrvà ccrr ch qus rs crc n mmr s v rchm sl qund s vrfcn prclr suzn cm l pssgg dl mus, l crcmn d un dcumn, cc. Il prblm dll cnclzn cn l funzn s nl f ch d un vn può ssr ssc un sl sruzn, m l pù dll vl l'ssczn è f cn un blcc d sruzn, qund, cn l funzn ch prndn l nm d hndlr gsr d vn. Gl vn, pr pr nrfccr HTML cn Jvscrp, nn vngn dfn nl g <SCRIPT> (rnn ch n qulch cs), m sn nsr ll'nrn d g HTML: l brwsr cmpbl cn Jvscrp ncnrnd un vn l nrpr l v. Esmp: <A HREF="jssrn.hml" nclck="lr('c')">lnk</a> nm cm l'vn nclck s nsr nl Tg cm s fss un spcfcr dll sss. E' mprn cpr qus cnc prché Jvscrp gl nz vv pch vn d rn vbl sl s nsr n prclr g cp spss d ulzzr gl hndlr n mnr rbrr d cnsdrr cm rrr l mnc vzn d un vn qund nsr n g ncmpbl. Inrn Explrr nll ulmssm vrsn h llrg l pssblà d ulzz dgl vn, pr cu pssn ssr nsr n nssm g, mnr Nscp è rms fdl ll rgnr mpszn. Qus prbb ssr un bn un ml, m pr sprnz prfrsc l srg d Nscp n qun gl vn prbbr ndr n cnfl, s nnprsn, prbbr dvnr ncnrllbl. Avr gl vn ll nrn dgl scrp Gl vn, uv, s pssn nch vr drmn ll'nrn dgl Scrp, rchmbl cm s fssr un prprà dll'gg. L snss è: Ogg.vn=hndlr; Pr chrr qus cnc ch è ulssm, m rrmn s vd pplc, pssm cnsdrr l cs n cu s ncssr crr un scrp ch cnsn d smulr l srmng, cè d crcr un'mmgn d un squnz sl qund sm scur ch qull prcdn r gà s crc qund vsulzz. Usr un mprzzr r mpssbl prché l'ff vrv scnd l vlcà d cnnssn. Un sluzn prbb ssr d crr un rry d mmgn sul qul s pr cn l cmnd: dcumn.mgs[num].nld=crc(); dv l funzn crc() srvv crcr l'mmgn succssv. Tu funznv ll prfzn, nch s cn qulch pccl vrzn scnd brwsr. Cn Explrr, nvc, s può ulzzr un Scrp pps pr un gg pr un vn rm l snss: <SCRIPT FOR=Objc EVENT=vn>...</SCRIPT> 15
Rggruppr gl vn Ngl ulm mp gl vn s sn mlplc d è dffcl nrn rcc, qund, pr fclà crchm d rggrupprl n szn mgn: Evn vbl d s dl mus Evn vbl d mvmn dl mus Evn vbl dl rscnmn dl mus (drg nd drp) Evn vbl dll'un cn l sr Evn vbl dll mdfch dll'un Evn lg l "fuc" Evn vbl dl crcmn dgl gg Evn vbl d mvmn dll fnsr Evn lg prclr bn Alr nuv p d vn N prm du grupp sn nsr qugl vn pc dl mus dll sr, cm l mvmn l prssn, ngl lr sn nsr gl vn srmn crrl gl gg. Il rggruppmn s rchd prché n n rzn gl vn sn dscr snglrmn è c, nch s vvngg l'nls, sgrl l sns: ch nvc è ulssm nll suzn pù nrc. Prm dll dscrzn ncpm ch u gl vn hnn l prpr snss cmps sncmn dl lr nm cl prfss n, d smp l'vn clck è rchm cn l'hndlr nclck. I drò un snss f d muscl mnuscl pr vdnzr bn l'vn, m ccrr nr prsn ch n Nscp 3.0 l'vn è pr d Jvscrp pr cu dv ssr scr u n mnuscl. Evn vbl d s dl mus A qus grupp s pssn rcndurr sgun vn: nclck: v qund s clcc su un gg; ndblclck: v cn un dpp clck; nmusdwn: v qund s schcc l s snsr dl mus; nmusup: v qund s lz l s snsr dl mus prcdnmn schcc; ncnxmnu: v qund s clcc l s dsr dl mus prnd l CnxMnu. Gl vn nmusdwn nmusup sn v d du mvmn dl s dsr dl mus, l prm qund s prm gù l s l scnd qund s sllv dp l clck. Il dpp clck è un vn ch nglb gl lr, pr l prcsn, v n succssn nmusdwn, nmusup, nclck. Vrsn cmpblà L'ulzz d qus vn è lm d dvrs fr. Innnzu ccrr cnsdrr l vrsn d Jvscrp cu fnn pr cnsgunmn lcun nn sn vld pr u brwsr. Ecc l qudr rplgv (NN s pr Nscp IE pr Inrn Explrr): NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp nclck 1.0 OnDblClck 1 1.2 nmusdwn 1.2 16
OnMusUp 1.2 OnCnxMnu DHTML 1 L vn ndublclck nn funzn su Mc Vlr ru fls L'vn nclck cn JvScrp 1.1 h ggun l pssblà d rcvr un vlr ru fls rm l qul può ssr v mn. Tl pssblà è vld nch pr gl vn nmusdwn nmusup pr ncnxmnu. Esmp: <A HREF="jsnrn.hm" nclck="rurn(cnfrm('s scur'))"> l lnk s v sl s s rspnd OK ll fnsr Il vngg è ch l'vn nclck s v prm dl g ssc pr cu s è un lnk, qus è crc dp l cmplmn dll'sruzn ssc. In l md qus crrsc s può pplcr pr rd chckbx pr nn slznrl, pr bn, cmprs qull Subm Rs, pr cnsdrrl nn prmu, rnn ch pr un pccl bug ch rnd nn frubl l'pzn pr l Rs su lcun pfrm. Inrssn l'vn ncnxmnu, nch prché spss s chd d dsblr l s dsr dl mus, m funzn sl cn Inrn Explrr 5.0. Tg Snsbl Un lr lm pr Nscp d Explrr nll vcch vrsn è d d g su qul può ssr v T g Evn s s c n N s c p J S c r 17
18 p OnClck Q u s g s r è u s c n p u l s n d n v ( s u b m ), p u l s
19 n d r s ( r s ), c s l l d c n r l l ( c h c k b x r d ), b
20 n, g < I N P U T > d p O P T I O N g < A >. ndblclck U s c n g < B O D Y >
21 < A > nmusdwn U s c n b n g < B O D Y > < A > nmusup U s c n b n
22 g < B O D Y > < A > ncnxmnu N s s u n p r c h é f u n z n s l n E x p l r r 5
. 0 Ml pù numrs g ssc n Explrr 4.0 succssv u p d vn: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP. Evn vbl d mvmn dl mus A qus grupp s pssn rcndurr sgun vn: nmusovr: v qund l mus s muv su un gg; nmusou: v qund l mus s sps d un gg; nmusmv: s muv l punr dl mus, m pché qus vn rcrr spss (l'ulzz dl mus è frqun), nn è dspnbl pr dful, m sl bbn cn l cur dgl vn, cm s spghrà n sgu. Gl vn nmusovr nmusou sn cmplmnr n qun l prm è v nl mmn n cu l punr è ps nll'r dll'gg l cu g cnn l'vn l scnd qund n sc. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp OnMusOvr 1.0 OnMusOu 1.0 OnMv 1.2 Gl vn nmusovr d nmusou ssumn dll vrsn 1.0 ll 1.1 d Jvscrp l cpcà d ssr ssc l g AREA, pr cu può prr nch cn l mpp clccbl, m pr Nscp dv ssr ssc nch l g HREF, cè d un lnk, nch s fz. Tg Snsbl Un lr lm pr Nscp d Explrr nll vcch vrsn è d d g qul può ssr ssc T g Evn s s c n N 23
24 s c p J S c r p OnMusOvr Q u s g s r è u s c n p u l s n d n v (
25 s u b m ), p u l s n d r s ( r s ), c s l l d c n r l l ( c h c k b x
26 r d ), b n, g < I N P U T > d p O P T I O N g < A >. OnMusOu U s c
27 n g < B O D Y > < A > OnMusMv U s c n b n g < B O D Y > < A > Ml pù numrs g ssc n Explrr 4.0 succssv u p d vn: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg,
INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP Rllvr Imprnssm l'vn nmusovr bbn d nmusou pr crr l'ff RllOvr. L snss è ml smplc: < hrf="#" nmusovr="dcumn.mgs[0].src='mmgn2.gf'" nmusou="dcumn.mgs[0].src='mmgn1.gf'"><mg src="mmgn1.gf"></> dv l cncll ssusc qulss lr lnk, mnr num è l numr d ndc dll'mmgn nll pgn HTML. Qulch nn f, qund nn ssvn prgrmm cm Flsh, l rllvr r l'ff grfc pù dffus crmn qull pù d rndr dnmc un s mvmnr lmn sc cm mnu l brr d nvgzn. Anzn! mgs[num] ndvdu l numr d ndc dll fgur nll pgn s n cnnd l numr d g IMG cnnd d 0 fn gungr l g dll fgur ch c nrss. Evn vbl dl rscnmn dl mus A qus grupp s pssn rcndurr sgun vn: ndrgdrp: vn v qund un un rscn un gg sull fnsr dl brwsr qund rlsc un fl sull sss; nmv: v qund un gg muv un fnsr un frm; ndrgsr: vn v ppn l'un nz rscnr un gg; ndrg: v qund l mus rscn un gg un slzn d s nll fnsr dll sss brwsr nch d un lr nch sul Dskp; ndrgenr: v ppn l'un rscn un gg su un bv vld dll sss d un lr brwsr; ndrgovr: v qund l'un l'un rscn un gg su un bv vld d sprl, d è sml ll'vn prcdn, m vn v dp qull; ndrglv: v qund l'un rscn un gg su un bv d pr sprl, m nn v vn rlsc; ndrgend: v qund l'un rlsc l'gg l rmn dl rscnmn. ndrp: v qund l mus s lz l s dl mus n sgu d un'przn d rscnmn; D qus sl l prm l scnd sn v n Nscp n Explrr, gl lr funznn sl n Inrn Explrr 5.0 l'rdn d dscrzn è qull d vzn dll'vn. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp OnDrgDrp 1.2 OnMv 1.2 OnDrg DHTML OnDrp DHTML 28
OnDrgSr DHTML OnDrgEnr DHTML OnDrgLv DHTML OnDrgOvr DHTML OnDrgEnd DHTML Tg Snsbl Alr lm è d, pr Nscp pr l vcch vrsn d Explrr, d g cu l'vn può ssr ssc: Evn Tg Assc OnDrgDrp Qus vn è us cn wndw OnMv Qus vn è us cn wndw Ml pù numrs g ssc n Explrr 4.0 succssv u p d vn: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP Evn lg ll sr A qus grupp s pssn rcndurr sgun vn: nkyprss: vn v qund un un prm rlsc un s nch qund l n prmu; nkydwn: v qund vn prmu l s; nkyup: vn v qund un s, ch r s prmu, vn rlsc; nhlp: v qund l mus schcch l s F1; L'ulm vn è s nurlmn nsr n qus sr, nch s vbl dll'unc s F1. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp nkyprss 1.2 nkydwn 1.2 nkyup 1.2 nhlp DHTML Nscp pr Unx Lnux nn suppr l gsn d s Tg Snsbl Alr lm è d, pr Nscp pr l vcch vrsn d Explrr, d g cu l'vn può ssr ssc: Evn nkyprss Tg Assc Qus vn è us cn g <BODY>, <IMG>, <A> npu TEXTAREA 29
nkydwn Qus vn è us cn g <BODY>, <IMG>, <A> npu TEXTAREA nkyup Qus vn è us cn g <BODY>, <IMG>, <A> npu TEXTAREA Ml pù numrs g ssc n Explrr 4.0 succssv u p d vn: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP Ts Inrcbl In Inrn Explrr 4.0, l'vn nkydwn funzn cn s: DELETE, INSERT Ts funzn d F1 - F12 Lr: - z Ts d spsmn: HOME, END, Lf Arrw, Rgh Arrw, Up Arrw, Dwn Arrw Numr: 0-9 Smbl:! @ # $ % ^ & * ( ) _ - + = < > [ ] {,. /? \ ' ` " ~ Ts d ssm: ESCAPE, SPACE, SHIFT, TAB In Inrn Explrr 5 funznn nch s: BACKSPACE PAGE UP, PAGE DOWN SHIFT+TAB Evn lg ll mdfch A qus grupp s pssn rcndurr sgun vn: nchng: v qund l cnnu d un cmp d un frm mdul è mdfc nn è pù slzn; ncllchng: v qund s mdfc un lmn n un Dbs, pr qus su crrsc h un us nn prprmn lg Jvscrp; nprprychng: vn v qund cmb l prprà d un lmn; nrdyschng: vn v qund l s dl crcmn d un lmn cmb, l'vn è ul, d smp, pr vrfcr ch un lmn s s crc. 30
Imprn è dr qulcs n pù su nchng: l'vn ssmgl ml d nblur, m vrfc nch ch l'lmn ch l rchm s s mdfc. Qus vn, nf, è v qund vn slzn un lr lmn d un ls qund s mdfc un cmp d s, pr cu lr ll'vzn, ccrr nch prr un'zn. Esmp d nchng prm Il cdc d mr nl g slc (fr nzn ll'vn): <slc nm="slc" nchng="f(hs.pns[1].slcd) lr('h slzn l scnd'); ls f(hs.pns[2].slcd) lr('h slzn l rz') "> <pn vlu="un">prm</pn> <pn vlu="du">scnd</pn> <pn vlu="r">rz</pn> </slc> Gl lr r vn sn frmn lg ll nvà ppr d Inrn Explrr 5.0 pr cu nn hnn pssblà d un grnd dffusn vnn ulzz dp vr pprs un cr prgrmmzn vnz. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp nchng 1.0 ncllchng DHTML nprprychn g nrdysch ng DHTML DHTML Tg Snsbl Alr lm è d, pr Nscp pr l vcch vrsn d Explrr, d g cu l'vn può ssr ssc: Evn Tg Assc nchng Qus vn è us cn g <SELECT> <TEXTAREA>, l g <INPUT> d p TEXT. Cn l vrsn Jvscrp 1.1 s ggung nch l g <FILEUPLOAD>, m nn funzn cn Inrn Explrr. OnCllChng Qus vn è us cn g <APPLET>, <BDO>, <OBJECT>. Pr lcun vn d Inrn Explrr 5.0 g ssc sn numrs, csì pr nprprychng nrdyschng: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP 31
Evn lg l "fuc" A qus grupp s pssn rcndurr sgun vn: nfcus: Qus hndlr è l'pps d nblur pr cu s v qund l'un nr n un cmp; nblur: v qund l punr dl mus l cursr sc dll fnsr crrn ulzznd l mus l crr TAB. Applc mdul, nvc, l hndlr s vv s s sc dl cmp l cu g cnn l cnrll; nslc: vbl qund s slzn dl s ll'nrn d un csll d s s cl mus s nnd prmu SHIFT slznnd cn s Frcc; nslcsr: s v qund s nz slznr un vn; nbfredfcus: s v cn un dpp clck cn un clck su un gg ch h gà l slzn, qund qus è n DsgnMd; nlscpur: s v qund un gg prd l cur dl mus. Gl ulm r vn sn prclrà d Inrn Explrr 5.0 rchdn ulrr cnscnz pr pr ssr dpr. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp OnFcus 1.0 OnBlur 1.0 OnSlc 1.0 OnSlcSr DHTML OnLsCpur DHTML OnbfrEdF cus DHTML Tg snsbl Alr lm è d, pr Nscp pr l vcch vrsn d Explrr, d g cu l'vn può ssr ssc: Evn OnFcus OnBlur OnSlc Tg Assc Qus vn è us cn g <SELECT> <TEXTAREA> cn l g <INPUT> d p TEXT. Cn Jvscrp 1.1, cè d Nscp Nvgr 3, qus hndlr è s ssc nch cn g <BODY> <FRAMESET> cn l rs d g d frm cm <BUTTON>, <CHECKBOX>, <FILEUPLOAD>, <PASSWORD>, <RADIO>, <RESET>, <SUBMIT>. In Jvscrp 1.2 s ggung nch l g <LAYER>. Qus vn è us cn g <SELECT> <TEXTAREA> cn l g <INPUT> d p TEXT. Cn Jvscrp 1.1, cè d Nscp Nvgr 3, qus hndlr è s ssc nch cn g <BODY> <FRAMESET> cn l rs d g d frm cm <BUTTON>, <CHECKBOX>, <FILEUPLOAD>, <PASSWORD>, <RADIO>, <RESET>, <SUBMIT>. In Jvscrp 1.2 s ggung nch l g <LAYER>. Qus vn è us cn l g <TEXTAREA> <INPUT> d p TEXT, nch pr Inrn Explrr. 32
In qulch pfrm gl vn nblur nfcus nn funznn bn cn l g <FRAMESET> Ml pù numrs g ssc n Explrr 4.0 succssv pr gl vn nblur, nfcus, SlcSr nlscpur: A, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT yp=bun, INPUT yp=chckbx, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP Evn d crcmn dgl gg A qus grupp s pssn rcndurr sgun vn: nld: Qus hndlr funzn nl crcmn d gg, pr l pù fnsr mmgn; nunld: è l'pps dl prcdn funzn qund s lsc un fnsr pr crcrn un'lr nch pr rcrcr l sss (cl s rfrsh); nabr: funzn qund l'un frm l crcmn d un gg clccnd su un lr lnk prmnd l s sp dl brwsr; nerrr: s v qund l crcmn d un gg cus un rrr, m sl s qus è dvu d un rrr d snss dl cdc nn dl brwsr csì funzn su un lnk rr d un'mmgn dll pgn, m nn su un lnk rr d crcmn d un pgn nr; nbfrunld: qus hndlr funzn ll sss md d nunld m s crc n un mmn prm; nsp: qus hndlr funzn qund s frm l crcmn dll pgn cn l s sp dl brwsr dvrbb funznr nch ll sss md d nunld crcnds prm d qus m dp nbfrunld. Gl ulm du vn sn prclrà d Inrn Explrr 5.0 rchdn ulrr cnscnz pr pr ssr dpr. Pr l vrsn d Jvscrp cc l qudr rplgv: NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp OnLd 1.0 OnUnld 1.0 OnAbr 1.1 OnErrr 1.1 OnBfrUnld DHTML nsp DHTML Tg snsbl Alr lm è d d g cu l'vn può ssr ssc: nld Tg ssc n Nscp Jscrp Qus vn è us cn g <BODY> <FRAMESET> d Jvscrp 1.1nch cn <IMG> 33
nunld nabr nerrr nbfrunl d nsp mnr n Explrr ccrr ggungr nch g <SCRIPT>, <LINK>, <EMBED>, <APPLET>. In Jvscrp 1.2 n Nscp s ggung nch l g <LAYER>. Qus vn è us cn g <BODY> <FRAMESET> nch n Inrn Explrr. Qus vn è us sl cn l g<img> nch n Inrn Explrr. Qus vn è us sl cn l g<img> cn Wndw mnr n Inrn Explrr nch cn <OBJECT> <STYLE>. Qus vn è us cn g <BODY> nch n Inrn Explrr. Qus vn è us cn g <BODY> nch n Inrn Explrr. nld Qus vn s bn ulzz prbb smulr un ff srmng mdn crcmn d gf jpg. Immgnm d vr dspszn un sr d jpg d nmr. Cn qus vn pssm sncrnzzr l vsulzzzn dll vr fgur ll fn dl crcmn dll prcdn mdn un scrp dl gnr: <scrp> vr whchimg=0; vr mximgs=5; funcn chnganmn(himg) { ++whchimg; f (whchimg <= mximgs) { vr mgnm="mg" + whchimg + ".gf"; himg.src=mgnm; ls { whchimg=-1; rurn; </scrp> pplc ll lmn <mg nm="chngnganmn" src="mg0.gf" brdr=0 lgn="p" nld="chnganmn(hs)"> nerrr Un prclr mnzn mr l'vn nerrr pr l su grnd ulà m pr l scrs ulzz ch s n f. Qus vn può: 1. spprmr mssgg d rrr ch l dbuggr msrrbb (mssgg dscr n Nscp, m nsc n Explrr) l u mdn l cdc d smp <mg src="crrup.gf" nerrr="null"> 2. s l cdc è sprss nll szn HEAD dvn v pr u l fnsr pr u gl vn d rrr v dgl gg v cnnu <scrp>wndw.nrrr=null</scrp> uv un vn nerrr ssc ll sngl mmgn gg cur l'vn pr qus mmgn gg dscp d qull gnrl 34
3. l'vn può fr d pù: può ndcr l p d rrr, l rg l'url ch l hnn cus ndcrl n un fnsr mmrzzrl n un rry. D sgu ndc l'sruv smp msr sul Rfrnc d Nscp ch srv csrur un dbuggr prsnlzz. Nll scrp c sn dgl rrr clccnd sul prm bn p sul scnd s pssn ndvdur: <scrp> wndw.nrrr = myonerrr msgarry = nw Arry() urlarry = nw Arry() lnarry = nw Arry() funcn myonerrr(msg, url, ln) { msgarry[msgarry.lngh] = msg urlarry[urlarry.lngh] = url lnarry[lnarry.lngh] = ln rurn ru funcn dsplyerrrs() { wn2=wndw.pn('','wndw2','scrllbrs=ys') wn2.dcumn.wrln('<b>errr Rpr</B> <P>') fr (vr =0; < msgarry.lngh; ++) { wn2.dcumn.wrln('<b>errr n fl:</b> ' + urlarry[] + '<BR> ') wn2.dcumn.wrln('<b>ln numbr:</b> ' + lnarry[] + '<BR>') wn2.dcumn.wrln('<b>mssg:</b> ' + msgarry[] + '<P>') wn2.dcumn.cls() </scrp> </p> <frm> <npu yp="bun" vlu="qus bn h un rrr d snss" nclck="lr('unrmnd srng)" nm="bun"> <p> <npu yp="bun" vlu="vsulzz l'rrr" nclck="dsplyerrrs()" nm="bun2"> </frm> Evn dl mvmn dll fnsr A qus grupp s pssn rcndurr du sl vn: nrsz: Qus hndlr s v qund l'un rmpcclsc ngrndsc un fnsr un frm, n cs prclr pr Explrr, un gg cu sn s fss l'lzz l lrghzz nch l pszn, cm d smp un lyr; nscrll: v qund s ffu l scrllng dll pgn s cl mus cn s PGUP PGDOWN nch cn l md dscrll. Pr l vrsn d Jvscrp cc l qudr rplgv n rss sn ndc l mdfch ppr nll dvrs vrsn d brwsr): Evn NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp nrsz 1.2 nscrll DHTML Tg snsbl Alr lm è d d g cu l'vn può ssr ssc: Tg ssc n Nscp Evn JScrp Qus gsr è us cn OnRsz l g <DOCUMENT>. OnScrll Qus gsr è us sl 35
n Explrr cn g <APPLET>, <BDO>, <BODY>, <DIV>, <EMBED>, <MAP>, <MARQUEE>, <OBJECT>, <SELECT>, <TABLE>, <TEXTAREA>. Ml pù numrs g ssc n Explrr 4.0 succssv pr gl vn nrsz: A, ADDRESS, APPLET, B, BIG, BLOCKQUOTE, BUTTON, CENTER, CITE, CODE, cusm, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FORM, FRAME, Hn, HR, I, IMG, INPUT yp=bun, INPUT yp=fl, INPUT yp=mg, INPUT yp=psswrd, INPUT yp=rs, INPUT yp=subm, INPUT yp=x, ISINDEX, KBD, LABEL, LEGEND, LI, LISTING, MARQUEE, MENU, OBJECT, OL, P, PRE, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TEXTAREA, TT, U, UL, VAR, wndw, XMP Evn d s prclr A qus grupp s pssn rcndurr sgun vn: nsubm: Qus hndlr è v dl clck su s d Inv d un frm; nrs: qus hndlr è v dl clck su s d Annull d un frm. sn du vn prclr lg du gg spcfc ch nn hnn sub ssnzl mdfch rsp l pss. Pr l vrsn d Jvscrp cc l qudr rplgv n rss sn ndc l mdfch ppr nll dvrs vrsn d brwsr): NN2.0 NN3.0 NN4.0 NN4.06 IE3.0 IE4.0 IE5.0 Vrsn Jvscrp nsubm 1.0 nrs 1.1 Tg snsbl Alr lm è d, pr Nscp pr l vcch vrsn d Explrr, d g cu l'vn può ssr ssc: T g Evn s s c n N s c p 36
nsubm nrs J S c r p Qus gsr è us cl g <FORM> s n Nscp ch n Explrr. Qus gsr è us cl g <FORM> s n Nscp ch n Explrr. 37
5. Vrbl, sprssn prr Vlr lrl I vlr lrl sn qunà splc pr cu nn vnn dchr srvn frnr nfrmzn d sprssn funzn (s.: l numr 45 è splcmn cnsdr numrc). In Jvscrp ssn dvrs p d vlr ch sn: numrc qul s dvdn n: Inr dcml, cn lngugg cnc, vrgl mbl (n nzn scnfc n qull sndrd) (Vlr nn prcs n Nscp 2.0) lgc bln: ch pssn ssumr sln du s (vr fls); srngh ( squnz d crr) vlr null crr spcl (s.: \f pr l'vnzmn pgn) gg Il lrl nr vn frn n r vrn: dcml, sdcml l scnd l bs cn cu vn rpprsn. Pr rpprsnr un l l s f prcdr d un 0, pr rpprsnr un sdcml l s f prcdr d 0x. Il vlr null s h qund l vrbl sn ndfn, cè qund nn v s ssgn nssun vlr ll' dll dchrzn. Imprn è slnr ch d un vrbl può ssr ssgn nch un gg s può nch crr un gg gnrc rm l'nunc: nmgg=nw Objc(); Crr spcl Tr l srngh ccrr ndcr crr spcl ch csuscn un mzz pr frmr l s: Dscrzn Dsgnzn sndrd Squnz Cnnuzn <nwln> \ Nuv rg NL (LF) \n Tb rzznl HT \ Bckspc BS \b Rrn crrll CR \r Avnzmn pgn FF \f Bckslsh \ \\ Vrgl sngl ' \' Vrgl dpp " \" Esmp d cdc spcl: <scrp> dcumn.wr("qus è un rg \n qus è un'lr"); lr("qus è un rg \n qus è un'lr"); </scrp> S n l dvrs ff sull lr sull fnsr dl brwsr. Cp spss, nf, d vlr ndcr ll'lbrr d dvr scrvr vd un srng suddvs n pù rgh, n qus cs l'ndczn è f cn un squnz d crr spcl. Un crr spcl, d smp, è prpr l'pc ch spss ssusc l'psrf prcò, n qus'ulm ulzz, v ndc 38
cm crr spcl fcndl prcdr d un brr rvsc. Il cmpur, n pch prl, qund rv qus prclr squnz s d dvr nrprr dvrsmn l crr, qus cm s fssr d cmnd. Escp d Unscp L srngh pssn ssr nrpr s cm squnz d crr cm rgh d cmnd. Un cmp d pplczn, d smp, è nl rmn d d nv l srvr, nch l cln, cn l md GET. In qus cs l scrp rcv d cm un srng cc (ppndd) ll'url rgnl n cu lcun squnz d crr ndcn vnn nrpr cm crr prclr cm l spz vu l sprr r vrbl vlr. Ad smp s ffu un rcrc su Alvs vdr ggungrs ll'url un sr d crr ch sgu un pun nrrgv, bbn, qu crr pprunmn r, frmn un srng ch nrrg l mr d rcrc. I crr scr n qull nzn s chmn squnz scp ulzzn l cdfc URL n cu: l cpp nm=vlr sn spr d un &; gl spz sn ssu d +; crr lfnumrc ssu dll'quvln sdcml prcdu d %. Pr dl lvr dl prgrmm CGI ch funzn su srvr è prpr qull d dcfrr l srng d npu n crr ISO-Ln-1, nn l squnz Uncd, m Jvscrp può lbrr qus srngh nch ll'nrn d prpr scrp mdn cmnd scp: scp("ecc qu")="ecc%20qu" cn unscp pr rndr l suzn cnrr: unscp("ecc%20qu")="ecc qu" Opprunmn ulzz, qus funzn s rvln ulssm ffrn ll'un un grnd grd d nrvà. Dchrzn vrbl L vrbl sn d nm smblc ch srvn d nvdur dll lczn d mmr n cu pssn ssr ps d vlr. Mfrcmn bsgn cnsdrr qus lczn cm dll scl cn un nm n cu s pssn nsrr qus vlr. In Jvscrp l vrbl sn cr cn l dchrzn vr, rbundl nch nssun vlr, m nch smplcmn ll' d ssgnzn d un vlr (d smp x=15 cr umcmn un vrbl numrc). L dchrzn vr su pù vrbl v rpu pr gnun ppur v f cn un'nrruzn d ln: vr mcrr, mvrbl; Pr l vrbl ch s dchrn s nzlzzn snz ssgnr un prclr vlr s rbusc l vlr null. Qus vlr può pprr pc mprn, m dvn ssnzl s s vul vrfcr l crcmn n mmr d un vrbl. Ad smp s s dchr un vrbl vr Vrfc=null; s s ulzz l cmnd f(vrfc!= null) lr("nn sn s ulzz"); 39
s può vrfcr s qus vrbl h vu un ulzz s vu. Un ulzz ml ul può ssr qull pplc ll fnsr ppup pr vrfcr s sn rms pr. Un lr vlr ch vn ssgn ll vrbl qund qus sn s dchr m snz ssgnmn è undfnd. Qus vlr è s nrd cn Jvscrp 1.3 è cc nll nrm ECMA. In l md l dchrzn: vr Vrfc; ssgn ll vrbl nssun vlr pr cu un vrfc su d ss rsusc l vlr undfnd l vlr s può vrfcr Esmp: f(vrfc == undfnd)) Ch h gà prgrmm cn lr lngugg nrà cn pcr l'srm flssblà d Jvscrp nl rr l vrbl, m l dchrzn nn è ncssr prché, pr l v brv d qus vrbl, nul rsprmr mmr. S s h fmlrà cn l prgrmmzn s s vul mnnr rdn r l vrbl, llr cnvn dchrrl nch n Jvscrp, pssblmn ll'nz dl blcc d cdc. Dv dchrr l vrbl? Dpnd dll'ulzz dll dsnzn ch c'è r vrbl glbl vrbl lcl. L dsnzn nn è pc cs, nz è ll bs dll prgrmmzn rn gl gg: l vrbl glbl hnn vlr pr u l dcumn HTML vnn dchr ll'nz dll scrp fur d gn funzn: l ps prfrbl è n g <SCRIPT> dll szn <HEAD> n md l d crr cnnr d vlr prm d gn lr ulzz; l vrbl lcl hnn vlr sl ll'nrn dll funzn n cu sn dchr, cè ll'nrn dl blcc d cdc cmprs r funcn(){ l chusur dll prns vnn dchr nr qus blcch. D cò s rcv ch l vrbl dchr ll'nrn d prns grff pssn ssr ulzz sl n qul blcc prchè sn vrbl lcl. I du dffrn p sn gnr d sgnz dvrs n qun l vrbl lcl hnn un v brvssm d ssn fnché pr l funzn, ll chusur dll prns vngn dsru lbrnd mmr, mnr l vrbl glbl sn d cnnr ch durn pr u l dur dll pgn srvn vclr d vlr r l funzn r gl scrp, m nch r l vr pgn l srvr. A qus pun v chdr prché ulzzr vrbl lcl, n qun qull glbl sn pù cmd, m l ncssà dl lr ulzz s nll mdulrà: l vrbl lcl rndn un scrp rulzzbl nch n lr pgn HTML, spru s slv n un fl srn cn snsn js. Idnfcr I nm d d sn chm dnfcr dvn ssr d lcun rgl: - pssn cnnr sl lr, numr rn d slnur, pr cu sn sclus gl spz bnch; - l prm crr dv ssr smpr un lr. E' ulzzbl cm prm crr nch l rn d slnur, m l cmplr r qul nm n md prclr pr cu s n scnsgl l'us; - Jvscrp è cs snsv pr cu r dvrsmn l lr n muscl n mnuscl, pr l mv è cnvnzn ulzzr l'nzl muscl pr nm d csn qull mnuscl pr l vrbl; - nn s pssn ulzzr nm ch rnrn nll prl chv. - L'us dffus è d ulzzr nm lungh pr dnfcr mgl l d, dprnd qus cnvnzn: 40
- dprr l rn d slnur pr dfnr mgl l d, csì l nm ss_nrss dnfc pù d qun pss fr l smplc nm x; - ccn ll'ulzz dl rn d slnur, s us nch l nzn cmmll pr cu s rnd muscl un lr ll'nrn dl nm d un vrbl, prpr pr dnfcrl mgl (d smp TssInrss). Prl chv In Jvscrp c sn dll prl chv ch nn s pssn ulzzr cm dnfcr d d, ccn l'lnc: Prl Chv dl lngugg Jvscrp bsrc D f pckg Thrw bln Dubl mplmns prv Thrws brk ls mpr prcd Trnsn by xnds n publc Tru cs fls nsncf rurn Try cch fnl n shr Vr chr fnlly nrfc sc Vd clss fl lng supr Whl cns fr nv swch Wh cnnu funcn nw synchrnzd dful g null hs Tp d vrbl I lngugg rdznl (cm l C) ulzzn sl vrbl ch sn s prcdnmn dchr pr du mv: mzzr l'us dll mmr; umnr l'ffdblà. Jvscrp, nvc, ulzz un cnrll d p lsc pr cu nn ss un szn d dchrzn d vrbl nn c'è bsgn d frl, m umcmn vn ssgn l p n bs ll dchrzn. Ad smp Prv="s" Prv=59 sn du dchrzn pnmn vld, m nl prm cs Prv è cnsdr gg srng, nl scnd l sss è cnsdr cm vlr numrc. S vlr dvrs vngn cncn prvl l vlr srng, pr cu un numr cncn d un srng prduc un srng, uv s l srng è un numr, l rsul srà un numr (s.: mvl=365+"10" drà 375). Tlr, prò, qus cnrll nn è smpr prcs (qund, d smp, s mlplc un vrbl srng cn un numr) pchè nn ss un cmplr pr cnrllr gl rrr, l scrp nn gnr rsul vlu. In qus cs pù ch dchrr bs cnvrr l rsul cn un funzn d cnvrsn. Pr cnvrr vlr bs ulzzr: - gl pc pr cnvrr un vlr numrc n srng l smm d un numr cn un spz; - md Srng() (d Jvscrp 1.2) pr cnvrr n srng cn l csrur Srng() (s.: msrng=srng(num)); - l funzn vl(), prsin() prsfl() pr cnvrr un vlr srng n numrc; - vlr lgc sn nu d vlr numrc srng pnnd qus ugul ru fls. 41
L funzn vl(), prsin() prsfl()funznn n qus md: prsin crc un nr ll'nz d un srng, scrnd l srngh, l vsulzz, gnrnd l pr dcml l'vnul vrgl (s.: prsin("39 grd")=39), un scnd prmr, fclv, è l bs numrc (s.: prsin(x,16) pr crcr numr sdcml); prsfl pr ll sss md, m cnsrv l'vnul vrgl prsn l sgn. vl è bbsnz cmplss crc qulss sprssn Jvscrp vld pr rsfrmrl n numrc. x=10; y=20; z=30; vl("x+y+z+900")=960 In qulss mmn, cmunqu, s può vrfcr l p dll vrbl rm l'prr ypf (s.: ypf 69 rsusc "numbr") l qul è s nrd cn Jvscrp 1.1. I vlr rsu sn: srng, bln, numbr, funcn. Ad smp mmgnm d vr l sgun vrbl: vr prv=nw Funcn() vr numr=1 vr s="slv" cn l'prr ypf s vrà ypf(prv) rsurà bjc ypf(numr) rsurà numbr ypf(s) rsurà srng Lfm d d Nll prm vrsn d Jvscrp (Nscp 2.0) d s cnsrvvn pssnd d dcumn dcumn d frm frm, uv cò pv mnr l scurzz dll pgn prchè un dcumn pv prr n un crnc, spss nvsbl, l'url d fl lggr l cnnu dl dsc pv prndr mnzn d s vs. Pr l mv s rduss l lfm dll vrbl ch durn, prcò, sl fnchè l fnsr ch l h cr rmn pr. Gà l vrsn Nscp 2.02 vv rsl l prblm, m ll sss md vv prv prgrmmr d un pn srumn pr gsr dcumn frm. Pr nr cn d l vrbl nl pssr d un pgn d un'lr l unch sluzn sn: - ulzz d ck nl l cln; - pssgg rm URL; - us d cmp nscs; - pssgg ulzznd frm l frm prn.frmnm.vrbl prn.frmnm.nmfunzn; - pssgg ulzznd l fnsr l frm nmfnsr.vrbl nmfnsr.nmfunzn. L'us d ck l rlscm prché bbsnz cmplss pc ndc n cs d vrbl ch nn mmrzzn d frm. Il pssgg r frm r fnsr è ml ulzz nll prc, m è nch ml cmd l pssgg rm URL, nch s sn s rscnr lcun dffclà n Inrn Explrr 4.0. 42
Pssgg d d Invc d spgr cm pssr d, ffrnm un suzn cncr. Immgnm d vr un frm cn cmp d p bun d vlr ndcr d un fnsr ll pgn succssv qul s è s prmu. Insrm s p dchrm nll szn hd un vrbl glbl Ts: <scrp lngug="jvscrp"><!-- vr s=null; //--></scrp> d gn s sscm l'vn: nclck="s=vlr" dv vlr srà ugul 1 nl prm s, ugul 2 nl scnd ugul 3 nl rz. Immgnm du cs: 1. d vlr rsmr d d un fnsr ch vn pr; 2. d rsmr d d un pgn lnk. Nl prm cs bbm sl un prblm d rsfrmn d d prché l fnsr mdr, ch cnn l vlr d pssr, cnsrv smpr qus vlr fnché nn vn chus pr cu bs nsrr un rg d cdc dl p: wndw.pnr.s Nl scnd cs, nvc, pssm ulzzr un fnsr cn d frm (nch un fnsr cn un unc frm v bn) cnsrvm l vrbl nll fnsr p (qull ch cnn frm) l rchmm dll lr fnsr cn l prprà prn.nmvrbl ppur p.nmvrbl. I frm, prò, sn spss scnsgl rsn scrsmn dpr su s d un cr lvll dv l pssblà d rsfrr d è qull d ulzzr l ck l'url. In qus'ulm cs pssm l vlr ll pgn succssv rvrs URL scrvm l sgun cdc HTML d un lnk: <scrp> funcn pr() { vr lnk="fnsr1.hml?"+s wndw.lcn=lnk </scrp> < hrf="#" nclck="pr()">lnk</> 43
s n cm c s l vlr ndc dp l pun nrrgv. Qus p d cdfc è qull ulzz dl Prl d lr lngugg ch prn sul srvr, m qu può ssr d d HTML (rs sl un'nnzn n qun qus pssgg nn smbr funznr cn IE4). Il prblm rrn qund bsgn rcuprr l vlr nll pgn succssv pché l brwsr lgg l'url cm un sl srng. In l cs bsgn ulzzr l prprà md dll'gg Srng. Pnm l lczn n un vrbl: vr usl=srng(hs.lcn); vr s=usl.chra(usl.lsindxof("?")+1); nll prm rg vn prs l'url rsfrm n srng (rcrd p d vrbl?), nll scnd s lgg l crr n pszn succssv qull dll'ulm pun nrrgv dll srng. Arry Gl rry sn ls numr d gg, ch n Jvscrp pssn nch ssr d p dvrs, ch pssn ssr cnsdr cm un'unà. Jvscrp nn suppr l mrc cm vrbl, m cm gg pr cu s cr un mrc sl s s dchr l dchrzn v f cm snz dll'gg Arry: nmmrc=nw Arry(num) Gl rry, n qun gg, vrrnn r n sgu qu n dm sl un ccnn nch prché l prgrmmr rdznl pr budn l crchrà r l vrbl. Pr ccdr d un lmn dll mrc s ulzz l'ndc ch ndc l pszn dll'lmn ll'nrn dll sss. Tl pszn s nz cnggr d 0 nn d 1. Ad smp cc un mrc nmls=nw Objc[] nmls[0]="rn"; nmls[1]="nr"; nmls[2]="sn"; nmls[3]="rs"; nmls[4]="glln"; pr cu l prm lmn è "rn" d h ndc 0. L'us dll mrc è mprnssm n Jvscrp prché qus lngugg ndczz prcch lmn cm l mmgn cm l lnk pr cu s pssn rchmr cn l'gg ssc cn l'ndc. In Jvscrp mncn l mrc bdmnsnl rdmnsnl, m s pssn fclmn rprdurr cm mrc d mrc. Oprr Gl prr s dvdn n: - prr d ssgnmn; - prr rmc; - prr lgc; - prr su b, dpr n gnr sl pr gnrr clr; - prr su srngh. pssn ssr unr bnr: prm rchdn un unc prnd, scnd du. Il prm prr ch ccrr cnscr è l'prr d ssgnmn l cu sgn è l'ugul (=), uv l su us n Jvscrp è sml l C d è dvrs d qull dll mmc prchè srv d 44
ssgnr un vlr nn d ffur cnfrn, pr qul ss un lr prr (= =). Adprnd l'prr d ssgnmn s cr cm un fcp dl vlr dll'sprssn dsr dll'prr sul d snsr dll'prr. Gl prr rmc sn bnr unr, gl prr unr mdfcn l vlr cu sn pplc sn: Oprr Smbl Azn Incrmn ++ Incrmn d un'unà Dcrmn -- Dcrmn d un'unà Mn unr - Rnd ngv un numr Gl prr unr mmc pssn ssr ps prm (prfss) dp (psfss) dll'prnd l lr vlr vr scnd qus pszn n qun l'prr prfss mdfc l'prnd prm d ulzzrn l vlr, mnr l'prr psfss mdfc l'prnd dp vrn ulzz l vlr, un smp può chrr: x=10; y=x++; pr cu y=10 x=11 x=10; y=++x; pr cu y=11 x=11 Gl prr bnr mmc nn cmbn l vlr dgl prnd, m mmrzzn l rsul n un rz prnd, cmprndn l prncpl przn rmch: Oprr Smbl Azn Addzn + Smm du prnd Srzn - Sr l scnd prnd dl prm Mlplczn * Mlplc du prnd Dvsn / Dvd l prm prnd pr l scnd Rs (mdul) % Frnsc l rs dll dvsn r du prnd nn è pssbl, prò, ulzzr l'prr d clcl dl mdul qund gl prnd sn n vrgl mbl. L'prr d dvsn, nvc, pplc vrbl d p nr prduc un rsul rnc dll pr dcml. S s dvd l mdul pr zr, s vrà un'cczn nll'scuzn: s l'przn ccd l lm nfrr (undrflw) l rsul srà zr, s ccd l lm suprr (vrflw) s vrà un'pprsmzn. L'prr d ssgnmn può nch ssr cmp, cè bbn d un prr rmc. In gnr qund l sprssn sn dl p: pssn ssr cmb n: cè s h l sgun bll: vrbl=vrbl prr sprssn vrbl prr = sprssn Scrur cmp Scrur quvln x += y x = x + y x -= y x = x - y x *= y x = x * y x /= y x = x / y x %= y x = x % y 45
Cn prr rlznl s nnd l rlzn ch un vlr h rsp d un lr. Ess s bsn sul cnc d vrà d flsà cmunqu prn cn sl du s dvrs (0/1, ccs/spn, vr/fls). Gl prr rlznl sn: Oprr Azn > Mggr d >= Mggr ugul < Mnr d <= Mnr ugul == Ugul!= Dvrs Gl prr rlznl, cm d, prducn 1 s l rlzn è vr, 0 s l rlzn è fls. E' mprn cpr ch l'upu è d sl d du vlr pr vr cnfusn r l'prr d ssgnmn qull d uguglnz. Gl prr lgc ssmgln nssm qull rlznl n qun dnn n upu sl du vlr, 0 s l'sprssn lgc è vr, 1 s l'sprssn è fls. Gl prr lgc sn (l NOT è un prr unr): Oprr Smbl Sgnfc AND & AND lgc OR OR lgc AND && AND vluzn OR OR vluzn XOR ^ OR sclusv NOT! Ngzn L ngzn (!) quvl l cmplmn un (~). Gl prr &, vlun nrmb l dll'rgmn dcdnd l rsul. Gl prr && pssn ssr mpg pr vr l vluzn dgl prnd d dsr s l vluzn nn è ncssr. L rlv bll d vrà sn: X Y X&&Y X Y X^Y!X 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 Qus prr sn ulssm pr rggruppr pù sprssn ch lrmn srbbr ulzz cn f nnd. Essn nch prr d ssgnzn cmbn cn prr lgc (&=, =, ^=). L przn b b s ccupn d cnrllr mpsr b. Occrr rcrdr ch l rsul d qus przn nn smpr dnn 0 ppur 1, cm pr gl prr lgc. Gl prr sn: Oprr Azn & AND OR ^ XOR ~ Cmplmn un >> Shf dsr << Shf snsr >>> Shf dsr cn rmpmn d zr 46
L bll d vrà sn l sss dgl prr lgc. S può pnsr ll'prr AND b b cm un md pr cncllr un b prndl 0, l'prr OR b b è l cnrr d AND può ssr ulzz pr mpsr d 1 un b, mnr l'prr XOR può ssr ulzz pr mpsr d 1 un b s b cnfrn sn dvrs. Gl prr d shf scrrn u b d un vrbl vrs dsr vrs snsr d un numr d pszn spcfc nuv b ch s crn vngn mps d 1, mnr b ch scn sn prs (rnn qull dl sgn). L przn d shf sn ul pr dcdfcr l'npu d un dspsv srn cm un cnvrr nlgc/dgl cnsnn nch przn vlcssm r nr n qun un scrrmn dsr dvd un numr pr du un scrrmn snsr l mlplc pr du. L'prr d cmplmn un, nvc, nvr l s d b, pr cu gn 1 srà rmu n 0 vcvrs. Nurlmn du przn d cmplmn sull sss numr prducn l numr rgnl. Anch l srngh hnn prpr prr: Oprr Nm Snss + Addzn srng=srnga+srngb += Accdmn srng=srnga+="grss" == Uguglnz f (srnga==srngb)!= Dsuguglnz f (srnga!=srngb) Prcdnz dgl prr Il rplg dll prcdnz dgl prr é: Prrà Armc Rlznl Lgc B b Al ++ --! ~ * / % + - << >> < <= > >=!= == & ^ && Alr ()(funzn) [](vr).?: <<= >>= = += -= *= /= ^= = &= %= Bss, S gl prr, prò, hnn sss prcdnz, vngn sgu n un rdn ch v d snsr dsr, m è pssbl cmbr qus rdn mdn l'ulzz d prns nd, pr cu srnn clcl prm l sprssn nll prns pù nrn. Tuv è ul dprr l prns pr mggr chrzz nch qund l prcdnz l rnd nul. 47
Esprssn l vl L sprssn pssn ssr clcl nch ll'nrn d g HTML prmnd d csrur vlr "l vl": l snss è: &{sprssn; un smp é: <scrp> <!- vr bwdh=50; //--> </scrp> <bl wdh="&{bwdh;%"> Tl sprssn sn mprn s sn lg d un vlr ch vr scnd pprun mdlà. Tuv h pu nr ch Inrn Explrr nn gssc qus p d sprssn ch, l cnrr, prbb rvlrs ulssm pr prgrmmr. 48
6. Funzn Funzn sndrd N cpl prcdn bbm ulzz dll smplc funzn pr l mnplzn d numr srngh m nn bbm ncr prsn un lr dfnzn. L funzn sn sruzn rggrupp pr ffur un przn pù cmplss ch vnulmn è rpu n vr pun dl prgrmm. In qus md l un può rsprmrs d scrvr rpumn l sss cdc n qun l grupp d sruzn srà nrpr cm un sngl unà. L ulzz dll funzn s sgu n du pss: l dfnzn dll funzn l su chm. L dfnzn è scr un sl vl m l numr d chm nn è lm. L snss pr l dfnzn è l sgun: funcn nm(prmr) { sruzn; Dv funcn è l prl chv ch sgnl ll nrpr ch sgu l dfnzn d un funzn, l nm è scl dll un (vvmn dv rspr gl sss vncl ch hnn nm dll vrbl) d prmr sn d n ngrss ll funzn. L funzn dvn ssr dfn prm dl lr ulzz. Pr ssr scur d vr dfn u l funzn prm dll scuzn dl cdc s prbbr nsrr r g <HEAD> </HEAD>. S l funzn è chm prm d ssr dfn l prgrmm gnr un rrr. L dfnzn dll funzn nn mplc l su scuzn m cnss sl nll rbuzn d un nm. Qund nl prgrmm s ncnr l nm ssgn l nrpr sgurà l sruzn r prns grff. Pr smp cnsdrm un funzn cs dfn: funcn smp_nm(nm1,nm2,nm3) { dcumn.wr(nm1); dcumn.wr(nm2); dcumn.wr(nm3); L funzn scrvrà sull schrm r nm ch l sn pss cm rgmn. S, durn l ssur dl prgrmm, l un ssrv ch dv nsrr rpumn l r sruzn n squnz è un bun d dfnr un funzn. Pr sgur ffvmn l funzn l s dv chmr cn prmr prun:... vr srng1, srng2, srng3; srng1="mrc"; srng2="mr"; srng3="mr"; smp_nm(srng1,srng2, srng3);... Qund l prgrmm ll rg ch rchm l funzn ssgnrà prmr dll funzn vlr dll vrbl srng1, srng2 srng3. Cm rsul s vrà l smp nl fl hml d r nm Mrc, Mr Mr. Ovvmn l sss rsul s h nch scrvnd:... smp_nm(="mrc","mr","mr");... Qund s ulzzn funzn ch ffun clcl mmc prbb fr cmd vr un vlr cm rsul dll funzn. In qus cs s dv nsrr l cmnd rurn cm ulm rg nll 49
dfnzn nll chm l funzn può ssr cnsdr cm un vrbl. Suppnm d dvr ulzzr un funzn ch clcl l smm d su prmr: funcn smm(n1,n2,n3) { vr rsul = n1+n2+n3; rurn rsul; L chm ll funzn rsul=smm(2,5,7); dcumn.wrln(rsul); In qus md l rsul d clcl ch l funzn sgu è ssgn ll vrbl rsul ch può ssr succssvmn ulzz nl prgrmm. L funzn prbb ssr chm nch nl md rdznl m n qus cs rsulrbb lqun nul. Funzn csrurc Abbm d n prcdnz ch Jvscrp è un lngugg d scrpng rn gl gg. I lngugg d prgrmmzn rn gl gg (C++ Jv) s bsn su sruur chm clss. L clss pssdn rbu md, m pr ulzzrl sn ncssr gl gg. Gl gg sn snz dll clss d rdn u l lr crrsch. Nl cs d Jvscrp s h un lmn nlg ll clss ch prnd l nm d funzn csrurc. Tu gl gg cr rm un funzn csrurc n rdn l crrsch. Tu l funzn dfn n Jvscrp pssn ssr ulzz cm csrurc. Cnsdrm l sgun smp: funcn vcl(p, clr, cnsum) { hs.p_vcl = p; // u, m, bc hs.clr_vcl = clr; hs.cnsum_vcl = cnsum; L prl chv hs f rfrmn ll gg chm nll funzn csrurc d l su us è un dll dffrnz ssnzl r funzn sndrd csrurc. Pr snzr gg d p vcl s dv ulzzr l sgun snss: frrr = nw vcl("u","rss","grnd"); wllms = nw vcl("u","bnc","md"); wllms.mr = "bnzn"; In qus md s sn dfn du gg ch hnn l sss p d crrsch nch s d vlr dffrn. S ssrv ch ll gg s pssn ggungr dll nuv prprà ch l funzn csrurc nn dfnsc. E pssbl nch snzr un nuv gg snz pssr nssun prmr ll funzn csrurc ssgnrl n un scnd mp. Il Jvscrp prm nch d crr dgl gg pù spcfc, cm pr smp dfnr dgl gg ch sn prclr p d vcl cn dll prprà ggunv. funcn vclsrdl(rg_vcl, scdnz_sscurzn) { hs.rg = rg_vcl; hs.scd_ss = scdnz_sscurzn; vclsrdl.pryp = nw vcl; Gl gg cs dfn sn scurmn vcl (rm l us dll prprà pryp) m n pù hnn un rg d un scdnz sscurv. Qund s vul snzr un gg d p vclsrdl s dv ulzzr l sgun snss: 50
glf = nw vclsrdl( 999ff, gnn2002 ) glf.p_vcl = u ; glf.clr_vcl = rgn ; glf.cnsum_vcl = md ; In qus md l vcl glf può ssr ulzz nl cdc sfrund l crrsch d nrmb l funzn csrurc. 51
7. Isruzn cndznl Jvscrp, pr cpcà vlumn lm, dspn d u l sruzn cndznl d bs, prsn gà d Jvscrp 1.0 qund rcnscu nch dll'ecma, mnr sl du sn pù rcn: l swch l d... whl nrd cn Jvscrp 1.2. Il cur d qus sruzn è nll cndzn ch n mplcn l'scuzn. Pr l mv l'sruzn v scr cn dvz cn ccurzz. Innnzu ccrr nr prsn ch l'prr d uguglnz d usrs nll sprssn è == nn = ch, nvc, è l'prr d ssgnmn: è qus un rrr frqunssm ch prgudc spss l'scuzn dll scrp n qun Jvscrp smplcmn gnr l'sprssn. Inlr l cndzn pssn ssr r lr bbn prsnd nzn ll prcdnz dgl prr (pr l mv gurdr l lzn rlv qus rgmn). Ecc un smp d sprssn cndznl: f (vlr<10 && vlr>0) pr cu l'sprssn rsusc l vlr ru s l numr è cmprs r 0 10 (m nn ugul gl srm). If, If...ls swch L'sprssn bs dl cnrll d fluss è: f(sprssn) {sruzn [ls sruzn]... dv l'sprssn è bln, cè può ssumr vlr ru fls. L'sruzn prncpl può ssr sgu dll'ls ch ndc un'sruzn lrnv d sgur qund l prm nn è vrfc. S ccrr ffur un sr d s s può rr l'ls n qus md: f (sprssn) {sruzn; ls (sprssn) {sruzn; ls (sprssn) {sruzn; ls (sprssn) {sruzn; ls sruzn; pr cu s vlu l'sprssn ccn ll'ls vn sgu s l'sprssn è vr, lrmn s sgu l'ls fnl. L lrnv qus dspszn è l'sruzn swch. L frm snc è: swch (sprssn) { cs csn1: sruzn; brk; cs csn 2: sruzn; brk;... dful: sruzn; Il vlr dll'sprssn vn cnfrn cn dvrs vlr d cs qund vn rv crrspndnz, s sgu l'sruzn l squnz d sruzn ssc, nch s l cs è ssc un 52
smn vu ppur un'ulrr swch. L'sruzn d dful è pznl vn sgu sl s nn è rv crrspndnz. L'sruzn brk è pznl n qun cnsn sl l prgrmm d uscr dl ccl d swch, s fss mncn l prgrmm cnnurbb cnfrnr l vlr. Ml vld è nch l'sprssn cndznl rnr ch fnd l'f...ls n un unc cmnd ch è l? cnscu nch cm prr rnr. L su frm è (fr nzn du pun): Esprssn1? Esprssn2 :Esprssn3 pr cu s è vr l prm sprssn vn sgu l scnd, s fls vn sgu l rz. S n l'smp: "H rv", cunr, (cunr==1)?"prl.":"prl." ch nl cs n cu l vrbl cunr s dvrs d un scrvrà prl l ps d prl. Un smp ml lgn d prr rnr è qull ch srv drmnr l brwsr ulzz: =dcumn.ll?1:0 nn=dcumn.lyrs?1:0 l sprssn vnn l csì: Explrr s nrprr l cmnd dcumn.ll, Nscp s nrprr dcumn.lyrs nn vcvrs pr cu s l brwsr nrpr l cmnd llr srà l vrbl ppur nn ugul d 1. Fr fr n Un lr pn srumn d rzn d sruzn è l ccl fr ch sgu un sr d sruzn fn ch nn è s rggun l lm ndc d un cndzn. L vrbl ssum spss l nm d cnr v nzlzz, p d gn pssgg qus vn ncrmn p s cnfrn cn l cndzn, s fls l ccl cnnu, s vr l ccl sc. L'sruzn è: fr (nzlzzzn; cndzn; ncrmn) {sruzn; dv l prm sprssn dc d dv nzlzzr l vrbl cnr, l scnd sprssn pn l lm cndznl nr l qul l'sruzn dv ssr rr, mnr l'ulm sprssn dc l lp d qun dv ncrmnr dcrmnr l vrbl. Ad smp ml ul è l ccl ch srv d nzlzzr un rry (nl nsr cs prndm un rry d 10 lmn: fr (=0; <10; ++){ mrc[]=0; ssrvm ch l mrc s nzn cnr d 0 pr cu qund l cnr ssum vlr 10 l ccl nn è rpu. E pssbl nch mr qulss pr dl csrur dll funzn, m s dv ssr scur ch l ccl s nrrmprà cnrllnd l vrbl rm sruzn srn. Ossrv ch nl csrur dll funzn fr ch sgu mnc l prm pr (d nzlzzzn) m è prsn l pun vrgl. vr =5; fr (; <10; ++){ dcumn.wr(); Un lr p d ccl è fr...n ch lvr cn l prprà d un gg. L snss è: fr (ndc n gg) {sruzn 53
Tl funzn è ulzz pr nlzzr l prprà d un gg ndc. E' un'sruzn un p' cmplss m ulssm pr cnscr l vlr ch n un cr mmn pssdn l prprà d un gg. Qu s n rlsc gn pprfndmn, m s n dà sl un smp: fr ( n nvgr){ dcumn.wr("prpr\' :"+); dcumn.wrln (" vlr: " +nvgr[]); Whl Alr cnrll d fluss s può vr cn: whl (cndzn) {sprssn; ch sgu l'sprssn fnché l cndzn è vr. Cm nl cs dll sruzn f swch, l funzn whl vrfc l cndzn rcchus r prns nd pr u l mp ch ss è vlu ru sn sgu l sprssn ch sgun. Nl mmn n qu l cndzn è vlu cm fls l ccl è nrr s sgu l sruzn ch l sgu. Pr crr un ccl nfn può ndr ml bn l'sruzn: whl (ru) {... Nll smp ch sgu s msr un smplc prgrmm ch cnn un ccl whl: vr cun=1; whl (cun<5) { dcumn.wrln(cun); ++cun; è ml mprn nsrr nl ccl whl un sruzn ch prm p pr l cndzn fls. Nll smp l vrbl cun è nzlzz 1 d è ncrmn dnr l ccl. In qus md l ccl sss srà sgu pr qur vl. d... Whl S ccrr sgur l blcc d sruzn lmn un vl c vn n u un lr cnrll d fluss: d {sruzn whl (cndzn) ch sgu l'sprssn fnchè l cndzn è vr. Cnsdrnd l smp ch sgu l ccl srà sgu un vl pr p nrrmprs pché l cndzn nn è vr. vr cun=5; d { dcumn.wr( sm rrv l numr +cun); cun++; whl (cun<2) Brk cnnu I cmnd brk cnnu srvn d mzzr ccl fr whl lr ch ll'prr cndznl f. Il cmnd brk, nf, nrrmp un blcc d sruzn slnd ll prm sruzn sgun l blcc cnnn l brk. L'ulzz pprpr è qull d vr l frmzn d lp snz usc: funcn nrrmp() { whl (x>0) { 54
f (x>3) brk; //qu l'sruzn s nrrmp d sc dll'whl x++; rurn x; L'smp msr cm l ccl cnnu d ncrmnr l vrbl x fnchè qus è mggr d 3, nl qul cs ncnr l'sruzn brk ch nrrmp l ccl cnnu cn l'sruzn succssv l blcc (rurn x;). Il cmnd cnnu, nvc, ndc d cnnur l blcc m nrrmpnd l'rzn n qul pun rprndnd dll'nz dl blcc. vr x=0; whl (x<10) { x++; f (x==3) cnnu; dcumn.wr("<br>... "+x+" ") vr x=0; whl (x<10) { x++; f (x==3) brk; dcumn.wr("<br>... "+x+" ") L'smp msr du ccl whl ch s rpn fnché x rmn mnr d 10. Nl prm ccl l prgrmm scrvrà sull schrm u numr d 1 10 slnd l 3. Nl scnd ccl l prgrmm scrvrà sl 1 2 n qun rvnd l numr 3 l ccl s nrrmp. 55
8. Imprr rm gl smp Aprr un nuv fnsr Nll prc JvScrp cnsn d rrcchr dcumn HTML cn scrp pù mn cmplss pù mn ul. L prur d fnsr ndpndn d qull prncpl dl brwsr è un dll pculrà d JvScrp, ch lr dr smp prc cnsn d dfnr pprfndr lmn cncul. Qus è l cdc HTML ncssr ll prur d un fnsr ndpndn d qull prncpl dl brwsr: <HTML> <HEAD> <l>nuv fnsr</l> </HEAD> <bdy> <FORM> <INPUT TYPE="bun" VALUE="Nuv fnsr" nclck='wndw.pn("fnsr.hm");'> </FORM> </BODY> </HTML> Pr cmprndr qus scrp è ncssr nrdurr l md pn(). I md sn dll prclr funzn ssc gl gg, d qul rchdn l lbrzn snz dfnrn l crrsch. I md sn fclmn rcnscbl dll du prns ch sgun l prl. OnClck è, nvc, un d prncpl gsr d vn, cm l è ulzz pr nzr rchmr un scrp. Vn ulzz cn l g <INPUT> d p pulsn, cl g <A>, cn pulsn d rs d nv, fnlmn cn l csll d cnrll. In rsps d un clck dl mus vn sgu l scrp spcfc dl gsr d vn, n qus cs wndw.pn (s può nch mr l rfrmn wndw, vs ch l md pn gl pprn d dful). JvScrp prm d dfnr nn sl l prur d un fnsr ndpndn d qull prncpl, m nch d rglrn lcun crrsch. Pr fr qus è ncssr mpsr lcun prmnr ch, è bn prcsr, gnrn prpr ff sclusvmn sull nuv fnsr, nn sull fnsr prncpl dl brwsr. JvScrp suppr sgun rgmn, n bs qul è pssbl dfnr l crrsch dll nuv fnsr: Mnubr=ys/n Lcn=ys/n Sus=ys/n Scrllbrs=ys/n Drcrs=ys/n Tlbr=ys/n Rszbl=ys/n Wdh=X Hgh=X Av dsv l brr d mnu dl brwsr Av dsv l brr dll URL dl brwsr Av dsv l brr d s dl brwsr Av dsv l brr d scrrmn dl brwsr Av dsv bn dl brwsr Av dsv pulsn dll brr dgl srumn Av dsv l pssblà d rdmnsnr l fnsr Lrghzz dll fnsr n pxl Alzz dll fnsr n pxl 56
Ecc l cdc cmpl d un fnsr n JvScrp d cu s sblscn l crrsch <HTML> <HEAD> <TITLE>Fnsr ndpndn</title> <SCRIPT LANGUAGE="JvScrp"> funcn NwWndw() { wn2=wndw.pn("hp://www.clrnc.cm/hm/hmlpn","nwwndw", "lbr=n,drcrs=n,mnubr=n,scrllbrs=n,wdh=400,hgh=30 0"); </SCRIPT> </HEAD> <BODY> <FORM> <npu yp="bun" vlu="nuv fnsr" nclck='nwwndw();'> </FORM> </BODY> </HTML> NwWndw è un funzn, vvr un sruzn spcl cnnn, su vl, lr sruzn. Tl sruzn dvn ssr bblgrmn rcchus r prns grff: {. S l fnsr d prr sn pù d un, s dfnscn pù funzn NwWndw, ssgnnd d gnun d ss un numr dvrs: NwWndw() NwWndw2() Apr un fnsr ndpndn dl brwsr può ssr ul, fn d un mggr funznlà dll pgn, crr un bn "cls". In qus cs s f us d un lr md, cls(), n u sml l gà smn pn(), cn l unc nn mrgnl cczn d prcurr l ff nvrs, vvr chudr l fnsr: <frm> <npu yp="bun" vlu="chud qus fnsr" nm="b1" nclck="wndw.cls()"> </frm> Il cnnu d un fnsr ndpndn dl brwsr rchm cn JvScrp, può ssr dfn n du md: drmn ll nrn dll pgn prncpl dl brwsr; d un fl HTML srn. Rchmr l cnnu drmn dll pgn prncpl dl brwsr h l vngg d llgrr l rffc sul srvr, vs ch cmunqu l brwsr nn dv rchmr un nuv dcumn HTML, m nrprr qull ps ll nrn dll scrp. <HTML> <HEAD> <scrp lngug="jvscrp"> funcn NwWndw() { msg=pn("","schrm","lbr=n,drcrs=n,mnubr=n,wdh=170,h gh=250,rszbl=ys"); msg.dcumn.wr("<head><title>html.</title></head><bdy>"); 57
msg.dcumn.wr("<b><center><fn sz=6>html.</fn></center></b><br>"); msg.dcumn.wr("<a HREF=hp:www.clrnc.cm/hm/hmlpn/jv.hm rg=hm>jvscrp</a><br>"); msg.dcumn.wr("<a HREF=hp:www.clrnc.cm/hm/hmlpn/sfnd.hm rg=hm>sfnd</a><br>"); msg.dcumn.wr("<a HREF=hp:www.clrnc.cm/hm/hmlpn/gf.hm rg=hm>gf nm</a><br>"); msg.dcumn.wr("<a HREF=hp:www.clrnc.cm/hm/hmlpn/gud_g.hm rg=hm>gud HTML</A><BR>"); msg.dcumn.wr("<a HREF=hp:www.clrnc.cm/hm/hmlpn/cnrll.hm rg=hm>cnrll d qul'</a><br>"); </scrp> </HEAD> <bdy> <frm> <npu yp="bun" vlu="apr l fnsr" nclck="nwwndw()"> </frm> </bdy> </HTML> L scnd ps, vvr rchmr l cnnu d un fnsr d un fl HTML srn, è cnsglbl qund l cnnu nn s lm smplc s, m cnng mmgn, sun un sruur cmplss. Mssgg sull sus br L brr d s dl brwsr è l lug slmn dpu ll vsulzzzn d nfrmzn su lnk prsn nll pgn. JvScrp prm rvrs smplc przn, d mdfcrn l cnnu sul n rlzn d lcun vn. S pr, pr un succssv pprfndmn, dl sgun cdc: <A HREF="lnk.hm" OnMusOvr="wndw.sus= qus s vn vsulzz sull brr d s dl brwsr ; rurn ru">clcc qu</a> Il gsr d vn "OnMusOvr" vn v qund l punr dl mus pss spr l cllgmn prsul. L prprà "wndw.sus" vsulzz l s nsr r gl pc dpp, nll brr d s dl brwsr. L sruzn "rurn" spcfc l vlr rsu d un funzn, ch può ssr "ru" "fls". Imps n qus md, l scrp vsulzz un srng d s fss, ch vn ssu sln qund l mus pss su un lr lnk. Pr vr qus pccl ncnvnn, fcnd sprr l s qund l mus sc dll r d lnk, è suffcn scrvr l sgun cdc: <HTML> <HEAD> <scrp lngug="jvscrp"> <!-- Hd funcn lnk(x) { wndw.sus = x; stmu("cncll()",500); 58
funcn cncll() { wndw.sus=""; // --> </scrp> </HEAD> <BODY> < hrf="lnk.hm" nmusovr="lnk('mssgg sull sus br');rurn ru;">lr lnk</> </BODY> </HTML> L funzn "lnk" vn nvc qund l punr dl mus pss sul lnk sul, mnr "stmu" sblsc ch nr 500 mllscnd (mzz scnd) dbb vrfcrs l funzn "cncll". Ngl smp fnr cnsdr l s è vsulzz sull brr d s n md sc. Cmplcnd un p l cdc è pssbl gnrr s n mvmn. Ecc un smp d s n mvmn sull sus br d dsr snsr: <HTML> <HEAD> <SCRIPT LANGUAGE="JvScrp"> vr md = 0; vr scrllg = fls; vr dly=100; vr spc=100; funcn scrll_sr() { vr =0; msg="qus è l mssgg vsulzz sull sus br"; fr (=0;<spc;++) msg=" "+msg; scrllg=ru; mrd=wndw.stmu("scrllmsg(0)",dly); funcn scrllmsg(ps) { vr u = ""; scrllg=fls; f (ps < msg.lngh) slf.sus = msg.subsrng(ps, msg.lngh); ls ps=-1; ++ps; scrllg=ru; mrd=wndw.stmu("scrllmsg("+ps+")",dly); </SCRIPT> </HEAD> <BODY nld="scrll_sr();"> </BODY> </HTML> 59
Un vlr nfrr dll vrbl "dly" umn l vlcà d scrrmn mnr, l cnrr, un vlr pù l l dmnusc. Il mp è sprss n dcm d scnd (mllscnd) vn mnpl rvrs l md "stmu()". Qus scrp us l prprà "sus" dll gg "wndw" grz l gsr d vn "nld" vn sgu umcmn ll prur dll pgn. Il gsr "nld" vn slmn us cn g <BODY>, <FRAMESET> d <IMG>. Nl cs spcfc l gsr d vn rchm l funzn "scrll_sr()", l qul su vl vv l mssgg sull sus br dl brwsr. Un bus d qus scrp rsch d gnrr cnfusn nl vsr m, s us cn prsmn, d bun rsul. L prsnz d s nll sus br prclud, nll mggr pr d qus scrp, l cnscnz, pr smp, dgl URL cllg d un cr lnk sul d mmgn. L bun vrslà d JvScrp prm d prsnlzzr pcmn l md n cu mssgg ppn nll sus br. Grz d un smplcssm scrp, pr smp, è pssbl vsulzzr un mssgg fss, ch nn prclud l ndczn dgl URL d rfrmn lnk prsn nll pgn: <scrp lngug="jvscrp"><!--dfulsus = "Qus mssgg ppr fss sull brr d s"//--></scrp> L prprà "dfulsus" ndc l mssgg ch dv pprr nll brr d s qund l dcumn è pr pr l prm vl. L qusn rlv ll vsulzzzn d s nll brr d s prm d nrdurr l cnc d mp n JvScrp. JvScrp msur l mp cm numr d mllsm d scnd rscrs dl 1 gnn 1970, vn mnpl grz ll gg "d", l qul cmb cn l r. L snz dll gg "d" rsuscn un vlr sc n bs d un vlr crrn. L r, n JvScrp, s bs sull mcchn cln, nn sul srvr. Cò sgnfc ch chunqu ncnr un rlg scr n JvScp vdrà vsulzz l r scnd l prpr pc, nn scnd l cmpur rm. Ecc un prm, smplc, smp d rr gnr cn JvScrp: <scrp lngug="jvscrp"> <!-- gg = nw D() dcumn.wr("sn l ",gg.ghurs(),":",gg.gmnus()) dcumn.wr(" dl ", gg.gd(),"/",gg.gmnh() + 1,"/",gg.gYr()); // --> </scrp> L gg D ulzz l mdll "nw D()", d l su vlr è mmrzz nll vrbl "gg". I md "ghurs()" "gmnus()" rsuscn, l un pr l r l lr pr mnu, vlr cmprs r 0 23, r 0 59. Il md "gmnh" rsusc un numr cmprs r 0 11, pr cu è ncssr ggungr 1 l numr rsu pr nr l ms crr. S nn s spcfc un cr r un d, l brwsr ulzz l r lcl. Pr fr qus è ncssr scrvr "gg" prm d cscun md "g", lrmn l brwsr nn s qul gg fr rfrmn. E pssbl, grz ll us cngun d scrp mdul, crr rlg dnmc ch vsulzzn l r scnd dp scnd. Ecc un smp: <HTML> <HEAD> <SCRIPT LANGUAGE="JvScrp"> funcn TmOufunc() { mu = wndw.stmu("tmoufunc()", 1000); vr dy = nw D(); dcumn.frms[0].lmns[0].vlu = dy.srng(); 60
</SCRIPT> </HEAD> <BODY ONLOAD="mu = stmu('tmoufunc();',1000);"> <FORM> <INPUT TYPE="x" NAME="r" VALUE="" SIZE="25"> </FORM> </BODY> </HTML> Il vlr 1000, rpprsn l numr d mllscnd nr qul s ggrn l r nll csll rm l md "mu()". L ssczn dgl vn JvScrp rlv ll sus br ll rr r n qus smp, prmn d vsulzzr l d l r ll nrn dll brr d s dl brwsr, rvrs un smplc scrp: <HEAD> <SCRIPT lngug="jvscrp"> funcn dclck() { wndw.stmu( "dclck()", 1000 ); dy = nw D(); slf.sus = dy.srng(); </SCRIPT></HEAD> <BODY nld="dclck()"> </BODY> Ulà nrssn pr l clr ch ggrnn prdcmn l prpr pgn, è qull ch cnsn l nsrmn umc dll d rfr ll ulm mdfc ppr ll pgn. In qus md è pssbl ggrnr prdcmn vsr sull mdfch nrvnu n dcumn HTML. Il cdc HTML pr nr un l rsul è ml smplc: <hml> <bdy> Ulm mdfc: <scrp lngug="jvscrp"> <!-- dcumn.wr(dcumn.lsmdfd) // --> </scrp> </bdy> </hml> L prprà "lsmdfd" è d sl lur rsusc l d n cu l dcumn è s mdfc pr l ulm vl. In qus md, snz lcun ulrr nrvn, l d dll mdfc cmbrà umcmn. Bn v n JvScrp E' smpr pù frqun mbrs n s Wb ch fnn lrg us d bn clccbl. Cn qus rmn s nndn qull mmgn ch, sfr dl punr dl mus, cmbn sp gnrnd ff grfc grfcmn ccvn. Qus ff, d un pun d vs mrmn cnc, sn gnr d ppl Jv d cdc JvScrp. Sull dsmn cnc d qus ulm s ncnr l prsn smp, rvrs l prsnzn dl cdc fn l rlv smp prc. 61
Il funznmn d l scrp è cnculmn ml smplc: nl mmn n cu l mus pss spr l'r d'mmgn, qus vn ssu d un'lr prcdnmn mps, cn l cnsgunz d gnrr un ff sml ll prssn d un bn. Prm d cmncr, qund, è ncssr crr du mmgn: mmgn01.gf: ch vn crc nsm ll pgn fnchè l punr dl mus nn v pss spr rmn vsbl; mmgn02.gf: ch è, nvc, vsulzz qund l punr dl mus pss nll'r d lnk scmpr qund l sss n sc. L du mmgn pssn nch vr snsn dvrs (un JPG l'lr GIF, pr smp), m dvn bblgrmn vr l sss lzz lrghzz. Il mnc rsp d l cndzn gnr pssm ff grfc. Il prm smp msr è vl ll rlzzzn d un'mmgn clccbl dl lg d HTML. ch, dll'nzl bnc nr, ssum clr rgnl nl mmn n cu vn cc dl punr dl mus. Pr fr qus è suffcn crr du mmgn dnch dl lg, sl pr un d ss, ssgnr clr n scl d grg. Un qulss prgrmm d frcc cmp gvlmn qus'przn. Cr l mmgn è ncssr mpsr crrmn l scrp, ch v nsr n du pr dsn dl cdc fn dl dcumn. L prm pr v nsr r Tg <HEAD></HEAD>, d è qull ch rgurd prncplmn l snss JvScrp: <HEAD> <SCRIPT LANGUAGE="JvScrp"> <!-- brwsrnm = nvgr.ppnm; brwsrvr = prsin(nvgr.ppvrsn); f(brwsrnm=="nscp" && brwsrvr >= 3) vr = "ys"; ls vr = "ys"; f(vr == "ys") { ff = nw Img(); ff.src ="ff.gf"; n= nw Img(); n.src ="n.gf"; funcn cv(mgnm) { f (vr == "ys") { dcumn [mgnm].src = "ff.gf"; funcn ncv(mgnm) { f (vr == "ys") { dcumn [mgnm].src = "n.gf"; // --> </SCRIPT> </HEAD> L scnd pr dl cdc v nsr ll'nrn d Tg, rchm l'mmgn sscndl gl vn dll scrp: 62
<BODY> <A HREF="jsnrn.hml" nmusvr="ncv('prm');wndw.sus='pulsn nm'" nmusu= "cv('prm')"> <IMG NAME="Prm" SRC="ff.gf" ALT="Prm qu" wdh=149 hgh=55 brdr=0> </A> </BODY> Imps l cdc è pprun smnrn pssgg pù mprn. L prm pr dll scrp cmprs r Tg <HEAD> sblsc qul brwsr pssn ccdr l dcumn d nrprr crrmn l cdc JvScrp. Il cdc nsr r g <SCRIPT> vn lbr dp l crcmn dll pgn. In qus md l funzn sn mmrzz m vngn sgu sln dgl vn prsn nll pgn. Il Tg <SCRIPT> è cnnu ll'nrn d <HEAD>, ch è l lug dpu cnnr d rlv ll'nszn dl dcumn, prchè qus vng crc pr prm grnsc ch l funzn sn nrpr prm ch l'un ffu lr przn. "nvgr.ppnm" "nvgr.ppvrsn" sn prprà d sl lur ch frnscn rspvmn: l nm dl brwsr ulzz nl prm cs l numr d vrsn nl scnd. Dl cdc s vnc cm qus scrp s suppr d Nscp 3 succssv (>= 3) d MS Inrn Explrr 4, nnchè dll'ulm rls d Opr. L srng succssv d cdc è prclrmn mprn, rchm l du mmgn d vsulzzr: ff = nw Img(); ff.src ="ff.gf"; n= nw Img(); n.src ="n.gf"; L funzn "cv" ulzz un smplc sruzn "f" pr cnrllr l cndzn dll scrp. L'prr d cnfrn "==", rsusc un vlr bln vr fls cm rchs dll'sruzn cndznl. Qund l funzn "cv" vn rchm, l brwsr vsulzz "ff.gf", mnr l funzn "ncv" rchm "n.gf". All'nrn dl lnk vnn nsr du gsr d vn: "nmusovr" d "nmusou". Il prm s v qund l'un pszn l punr dl mus sull'r d lnk; mnr l scnd qund l sss n sc. L'mmgn d nsrr ll'nrn dl lnk è "ff.gf". Anch qus'mmgn dv cnnr un rfrmn ll scrp, rvrs l cdc NAME="Prm". Snz d ss l scrp nn funzn. All'mmgn nzl è pssbl ffncrn lr, snz lcun rsrzn, ch nn s l rsp dl cdc JvScrp. S cnsdr, pr un smp chrfcr, d vlr nsrr du nuv lnk (un JvScrp l'lr Hml) ssc bn clccbl. In qus cs dvrnn crrs qur mmgn, du pr gn lnk: jvscrp01.gf jvscrp02.gf hml01.gf hml02.gf Prnd dl cdc prcdnmn smn srà suffcn ggungr sl pccl pzz d cdc JvScrp. All'nrn d Tg <SCRIPT></SCRIPT> v ggun: <A HREF="lnk.hm" nmusvr="ncv('jvscrp')" nmusu= "cv('jvscrp')"> <IMG NAME="jvscrp" SRC="jvscrp01.gf" ALT="Jvscrp" wdh=130 hgh=36 brdr=0></a> <BR> 63
<A HREF="lnk.hm" nmusvr="ncv('hml')" nmusu= "cv('hml')"> <IMG NAME="hml" SRC="hml01.gf" ALT="HTML" wdh=130 hgh=36 brdr=0></a> Il cdc prsn n qus smp nn è l sl dbl pr nr l'ff pc d bn clccbl, m è crmn r pù dffus smplc d prsnlzzr. Un bus d qus scrp rsch d rllnr psnmn l vlcà d crcmn dll pgn. A l prps s cnsgl d nsrr pccl mmgn n frm GIF cn l pù bss numr pssbl d clr. Psswrd n Jvscrp L przn d un pgn Wb cn psswrd vvn slmn rvrs un CGI (Cmmn Gwy Inrfc), ch rchd l vsr l prl d rdn l vnul lgn d ccss. L mpszn l cnfgurzn d un CGI rchdn cnscnz cnch pprfnd, snz cnr ch ml srvr gru (Gcs, Aspd cc.) nn prmn, pr rgn d scurzz, d dpsr prpr CGI lr prgrmm rsdn su prpr hrd dsk. Jvscrp smplfc qus prcdur prmnd d mpsr psswrd d ccss slzn un s Wb sln d lcun pgn d ss. E bn prmr fn d r ch qus sluzn nn dà l sss grnz d scurzz d un psswrd gnr d un prgrmm CGI, ch rmn ndubbmn l sluzn mglr pr ch h ncssà prfssnl. L dulà dl lngugg d scrpng cnsn vr sluzn, pù mn ffcc, pr l gnrzn d psswrd su pgn Wb. In qus smp s nlzzrnn du smp ndcv. Il prm smp è d smplc rlzzzn lr ch d fcl cmprnsn. Qus l cdc HTML d nsrr r g <HEAD></HEAD> d un dcumn Wb: <scrp lngug="jvscrp"> funcn psswrd() { vr sv = 1; vr pss1 = prmp('insrsc l u Psswrd'); whl (sv < 3) { f (!pss1) hsry.g(-1) f (pss1.lwrcs() == "HTML.") { lr('l u psswrd è s'); brk; sv+=1; vr pss1 = prmp('sbgl! Pu rprvr.','psswrd'); f (pss1.lwrcs()!="lr" & sv ==3) hsry.g(-1); rurn " "; dcumn.wr(psswrd()); </scrp> Il rsul gnr d qus cdc è, pr u brwsr ch supprn jvscrp (Nscp, Inrn Explrr, Opr lr), l vsulzzzn d un fnsr d vvrmn ch rchd qun scr r pc sngl nll rg d cdc: vr pss1 = prmp('insrsc l u Psswrd'); L psswrd ch s nnd rchdr l vsrr (nll smp "HTML.") v nsr r pc dpp nll rg d cdc: f (pss1.lwrcs() == "c") 64
L fnsr d vvrmn prvd un srng bnc d rmpr cn l psswrd d ccss. "LwrCs" è un md ch cnvr l srng n crr mnuscl. Nn ss un quvln n HTML. I md sn p prclr d funzn ch rchdn dgl rgmn vngn ssc gg d lbrn gl gg snz dfnrn l crrsch. Cm l funzn, nch md s rcnscn dll prsnz d prns nd ch sgun l prl, m dffrnz dll prm nn sn prcdu dl rmn "funcn". Mdfcnd l cdc scrp è pssbl mpsr l numr mssm d nv cncss n cs d nsrmn d prl d rdn rr. Nll smp cnsdr l numr mssm d nv cncss è 3: f (pss1.lwrcs()!="lr" & sv ==3) hsry.g(-1); Il md hsry.g(-1) ndc l brwsr l pgn d vsulzzr succssvmn l fllmn dl rz ulm nv. In qus cs (-1) sngnfc ch l pgn vsulzz srà l sss dll qul s è n d ccdr ll pgn cn psswrd. In lr prl l cdc smul l prssn dl s "bck" "ndr" dl brwsr. Pr rndr qus funzn mggrmn "usr frndly" è pssbl ssur (-1) l lnk un lr pgn ch vvr gnlmn dll rrr nrvnu nll dgzn dll psswrd. Cnsdrnd d chmr l nuv pgn "rsps.hm", l cdc è: f (pss1.lwrcs()!="lr" & sv ==3) lcn.hrf = "rsps.hm"; Nl cs n cu l psswrd s dg crrmn, l mssgg d cnfrm ch ppr n un nuv fnsr prm dl crcmn dll pgn pr vn gnr dl cdc: lr('l u psswrd è s'); Il scnd smp rgurd un psswrd numrc, nll qul è ncssr dgr d un pps pulsnr un cdc d qur numr. Ecc l cdc cmpl: <HEAD> <SCRIPT lngug="jvscrp"> <!-- vr usrmulcd=40 vr cd=0 vr mul=1 vr dg=0 vr fls=0 funcn Enr_cd(numbr) { cd=cd*10+numbr mul=mul*numbr dcumn.cdpd.hcd.vlu=cd dg++ f (dg==4) { f (mul==40) { lcn=cd+".hm" ls { fls++ cd=0 mul=1 dg=0 f (fls<3) 65
{ f (fls==1) {dcumn.cdpd.hcd.vlu="rprv" f (fls==2) {dcumn.cdpd.hcd.vlu="ulm vl" ls { lcn="rsps.hm" dcumn.cdpd.hcd.vlu="a prs!" funcn kycdpd(mulcd) { usrmulcd=mulcd dcumn.wr("<frm nm=\"cdpd\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 1 \" nclck=\"enr_cd(1)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 2 \" nclck=\"enr_cd(2)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 3 \" nclck=\"enr_cd(3)\"><br>"); dcumn.wr("<npu yp=\"bun\" vlu=\" 4 \" nclck=\"enr_cd(4)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 5 \" nclck=\"enr_cd(5)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 6 \" nclck=\"enr_cd(6)\"><br>"); dcumn.wr("<npu yp=\"bun\" vlu=\" 7 \" nclck=\"enr_cd(7)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 8 \" nclck=\"enr_cd(8)\">"); dcumn.wr("<npu yp=\"bun\" vlu=\" 9 \" nclck=\"enr_cd(9)\"><br>"); dcumn.wr("<npu yp=\"x\" nm=\"hcd\" sz=10 vlu=\"\"><br>"); dcumn.wr("</frm>"); // --> </SCRIPT> </HEAD><BODY> <FORM nm="cdpd"><input yp="bun" vlu=" 1 " nclck="enr_cd(1)"><input yp="bun" vlu=" 2 " nclck="enr_cd(2)"><input yp="bun" vlu=" 3 " nclck="enr_cd(3)"><br><input yp="bun" vlu=" 4 " nclck="enr_cd(4)"><input yp="bun" vlu=" 5 " nclck="enr_cd(5)"><input yp="bun" vlu=" 6 " nclck="enr_cd(6)"><br><input yp="bun" vlu=" 7 " nclck="enr_cd(7)"><input yp="bun" vlu=" 8 " nclck="enr_cd(8)"><input yp="bun" vlu=" 9 " nclck="enr_cd(9)"><br><input yp="x" nm="hcd" sz=10 vlu=""><br></form> </BODY> L psswrd d qus smp vn gnr dll rg d cdc vr usrmulcd=40 66
Ch nn è lr ch l rsul dll mlplczn d: 2*5*1*4, ch f ppun 40. All dgzn d qus numr l scrp rmndrà ll pgn "2514.hm", cè l pgn pr cr ll scp. L prm cnsdrzn ch vn n mn è ch l rsul d 40 può rggungrs nch n lr md: 2*5*2*2, 1*2*4*5, 5*2*1*4 cc. M n qus cs l unc pgn ch l scrp rggungrrà è qull cn numr dll psswrd rl, mnr ngl lr cs ml smplcmn nn rvrà l lnk n qun nssn. S pr smp nsrm un vlr d 128, l psswrd prà ssr: 8*8*1*2*, vvr 2*4*8*2, vvr 2*1*8*8*, vvr 8*1*2*8, vvr 4*4*4*2 cc. S l nnzn è d sfrur l prm d qus psswrd (8812), l pgn pr dvrà chmrs "8812.hm". L pr succssv d cdc JvScrp: f (fls<3) { f (fls==1) {dcumn.cdpd.hcd.vlu="rprv" f (fls==2) {dcumn.cdpd.hcd.vlu="ulm vl" ls { lcn="rsps.hm" dcumn.cdpd.hcd.vlu="a prs!" drmn nll rdn: l numr d nv prmss (n qus cs 3); l mssgg vsulzz n cs d rr dgzn dl prm nv (n qus cs "rprv"); l mssgg vsulzz dll scrp dp l scnd rrr (n qus cs "ulm vl); l pgn vsulzz n sgu l rz rrr ch dvrà ssr cr mss sul srvr (n qus cs "rsps.hm") fnlmn l mssgg ch ppr dp l ulm nv fll. L scnd dll du psswrd è pù scur dll prm, nch s cm ccnn spr, l mggr scurzz s n sln cn prgrmm cr ll scp. Cnrll d nsr n un frm Il succss d un s Wb dpnd d fr rgn ch bn ngr vvn un crcl vrus f d ccss sgu r nvgr. Nn ss un frmul mprc ch n spgh l rgn, n è qus l sd pr crcrn. Ad un nls suprfcl, prò, smbr vdn ch l succss d un s dpnd n bun msur dll csnz dll vs d pr d un "zccl dur" d vsr. Prché un s cr un unz "ffzn" è ncssr ch m n nzv vl crr l ffnà. Un rppr prsnlzz prsnl "n n" è n qus sns l sluzn dl. M s qus sluzn è prcrrbl pr s d pccl dmnsn, rsul mprcbl pr grss rlà cn cnn d mgl d cn l grn. S pns sln ch rspndr 100 ml grnlr prbbr nr ccup 5 prsn mp pn. Trlscnd gl sp pù nmmn psclgc, l sluzn cnc qus prblm è csu d mdul HTML. Inrd dll prm vrsn d HTML, mdul sn d qusnr prcmpl cn cmp d dvrs p. Spss sn cllg CGI (Cmmn Gwy Inrfc), prgrmm slmn scr n Prl rsdn su srvr. Qus prgrmm rcvn mdul cmpl, l lbrn scnd schm prdfn l spdscn gl ndrzz -ml ndc. L umzn cnsn d un CGI è n mssm pr drmn dll su cmplssà. L dffusn d mdul HTML cnsn d crr gusbk, qusnr, quz nrv, currculum v s grnd s ch qull pù pccl, fn ll hm pg prsnl. Essn dcn, s nn cnn, d prgrmm gru d lrn srvz n ln d suppr. Trlscnd l bs cnch sull qul s rggn frm HTML, qull ch s nnd svluppr n qus sd è un cnrll ch Jvscrp cnsn d ffur sull cmplzn d mdul. E' frqun ch lcun mdul vngn cmpl prv d pr fndmnl, snz l qul gl sss nn hnn rgn d'ssr. In qus md s h l duplc svngg d rcvr nfrmzn przl nsrvbl, 67
pprr vlln n cnfrn d vsr ch mmgnn d rcvr un rsps ch nn vrrà m, pr smp, prchè l cmp "-ml" nn è s cmpl pr dmncnz. Pr vr cr ncnvnn è pssbl un cnrll n mp rl sull cmpl cmplzn dl frm d pr dl vsr. In lr prl, s l'un nn cmpl u cmp, sl lcun, rrà un mssgg d vvs ch ndc l'rrr l dmncnz. Pr smplfcr l cmprnsn d qun sps n qus smp, s cnsdr l cs prc d un mdul nfrmv cmps d r cmp: nm cgnm, -ml lfn. D qus d sln l numr d lfn è fclv, mnr gl lr sn cnsdr bblgr. Il cdc HTML ch cr l frm è l sgun (l rsc ndc cmp bblgr): <FORM> Nm cgnm *<BR> <npu yp=x nm="nm" sz=40><br><br> E-ml *<BR> <npu yp=x nm="ml" sz=30><br><br> Tlfn<BR> <npu yp=x nm="lfn" sz=20><br><br> <INPUT TYPE="SUBMIT" VALUE="Spdsc"> </FORM> Imps n qus md l frm è crmn prv m s spd snz un cmp bblgr cmpl nn dà lcun mssgg d vvs cl rsch, gà ndc n prcdnz, d rcvr nfrmzn przl pgg nsrvbl. Jvscrp nrvn n u cn un snss smplc fclmn cnfgurbl. Il cdc v nsr n du fs succssv. Innnzu v mps l cdc ll nrn d g <HEAD> dl dcumn: <scrp> funcn chckrqurd(whch){ vr pss=ru f (dcumn.mgs){ fr (=0;<whch.lngh;++){ vr mpbj=whch.lmns[] f (mpbj.nm.subsrng(0,8)=="rqurd"){ f (((mpbj.yp=="x" mpbj.yp=="xr")&&mpbj.vlu=='') (mpbj.yp.srng().chra(0)=="s"&&mpbj.slcdindx==-1)){ pss=fls brk f (!pss){ lr("nn h cmpl crrmn l frm. Alcun nfrmzn nn sn s nsr. Clcc su OK vrfc l nsrmn") rurn fls ls rurn ru </scrp> L rg d cdc: lr("nn h cmpl crrmn l frm. Alcun nfrmzn nn sn s nsr. Clcc su OK vrfc l nsrmn ") 68
mps l mssgg ch l brwsr dà n rsps qund vrfc l'ssnz d lcun cmp bblgr. Ovvmn l mssgg può ssr mdfc scnd l prpr sgnz. Il rs dl cdc smn nn v lrmd mdfc. L funzn chckrqurd è qull ch rgg l nrn sruur dll scrp sblsc ch cmp cnrllbl sn x, xr slc. Cnclus l mpszn dl cdc Jvscrp è ncssr pprr lcun mdfch sngl cmp dl frm vs n prcdnz. Pr prm cs v nsr l rfrmn ll funzn chckrqurd nll prur dl frm: <FORM nsubm="rurn chckrqurd(hs)"> Succssvmn è ncssr nprr nm d dvrs cmp ch s vgln bblgr l rmn "rqurd". Pr smp l nm dl prm cmp è "nm", pr ssr mps cm bblgr dv rsfrmrs n "rqurdnm". Csì pr l cmp "ml" ch dvn "rqurdml". L unc cmp nn mdf è "lfn", ch cm scr n prcdnz è fclv. Appr l dvu mdfch, l frm vs n prcdnz ssum l sgun sruur (frm rsnd l cdc nsr r g <HEAD>): <FORM nsubm="rurn chckrqurd(hs)"> Nm cgnm *<BR> <npu yp=x nm="rqurdnm" sz=40><br><br> E-ml *<BR> <npu yp=x nm="rqurdml" sz=30><br><br> Tlfn<BR> <npu yp=x nm="lfn" sz=20><br><br> <INPUT TYPE="SUBMIT" VALUE="Spdsc"> </FORM> Cmpl l frm prmu l s l s "spdsc" nn rmn lr ch vrfcr gl ff dll scrp. Prggr l cdc srgn Tr l sgnz pù sn d ch rlzz s Wb prg drl n Inrn, l ul dl prpr dr d'ur ccup un pszn prmnn. S l'dr rdznl è grn d un'mp gursprudnz, ml sr dl Wb publshng rsn vulnrbl vlzn pls d dr d'ur lru. Qus s d nscurzz è cus d fr srmn lg ll nvà dl md Inrn, ll su dmnsn d ll pssblà d vsulzzr l cdc HTML d un dcumn mdfcrl prpr pcmn. In lr prl, l'ssnz d un cdc cmpl n HTML l pssblà ch chunqu pss pprprrs d mmgn s, spss cus vr prpr clnzn d Wbs rlv dnn cnmc d'mmgn. Snz ddnrrs lr n dssrzn gurdch, cò ch prm msrr n qus smp è cm Jvscrp pss, cn u lm d qus lngugg d scrpng, rslvr przlmn l prblm succ. Gl smp Jvscrp ch sgun cnsnn d dsblr, n u n pr, l'us dl s dsr dl mus. L'mprnz d qus s nll'mb d nvgzn su WWW è dvu du pculrà: 1. vnd l s dsr su un pun qulss d un dcumn Wb slznnd l vc "HTML" n Inrn Explrr "vsulzz srgn" n Nscp, vn msr l cdc fn cmpl dll pgn; 2. vnd l s dsr dl mus su un'mmgn d un pgn Wb slznnd l vc "Slv mmgn cn nm" n Ms Inrn Explrr Nscp, s pssn slvr su Hrd Dsk u gl lmn grfc dl dcumn. 69
Jvscrp rsc przlmn d nnullr l'us dl s dsr dl mus cn cdc rlvmn smplc. S sln l nur przl nn dfnv dll sluzn prché, cm pù prspcc vrnn n, l'spdn è ggrbl vnd cmnd dll lbr dl brwsr: VISUALIZZA / SORGENTE PAGINA pr Nscp VISUALIZZA / HTML pr MsI Ess, qund, un lr md pr vsulzzr l cdc fn d un dcumn, m s l pgn vn prv dll lbr (smplc d nscndr cn cmnd Jvscrp) l prblm è n pr rsl. In pr prché dsblnd l'us d Jvscrp dl brwsr l u vrrbb vnfc, d nch nl cs n cu cò nn vvnss srbb suffcn rpscr fl dll cch dl brwsr. Qus smp Jvscrp nn rslvn ll rdc l prblm m sn cmunqu un bun drrn. Il prm smp s rfrsc ll pssblà d lmnr, u cur, l'us dl s dsr dl mus ll'nrn d un pgn Wb. Qund, nn s lm dsblr l cmnd "HTML" " vsulzz srgn", m u l pzn prpr dl s dsr. Il cdc jvscrp ncssr l crr funznmn dll'smp v nsr n du pun dsn dl dcumn. L prm pr v nsr ll'nrn dgl lmn <HEAD></HEAD>: <SCRIPT LANGUAGE="JvScrp1.1"> <!-- Bgn funcn rgh() { f (nvgr.ppnm == 'Nscp' && (.whch == 3.whch == 2)) rurn fls; ls f (nvgr.ppnm == 'Mcrsf Inrn Explrr' && (vn.bun == 2 vn.bun == 3)) { lr("spcn, l s dsr dl mus ' dsbl"); rurn fls; rurn ru; dcumn.nmusdwn=rgh; f (dcumn.lyrs) wndw.cpurevns(evn.mousedown); wndw.nmusdwn=rgh; // End --> </scrp> Il mssgg d Alr ch n Inrn Explrr vvr ch l s dsr è dsbl v rpr nll rg d cdc: lr("spcn, l s dsr dl mus ' dsbl"); In Nscp, l cnrr, clccnd sul s dsr dl mus nn ppr lcun mssgg d Alr; qus è l'unc dffrnz d pprcc ll scrp r d du brwsr. Imps l cdc r cmp <HEAD> è ncssr nsrr lr rgh d cdc ll fn dl dcumn, dp l chusur dl g </HTML>: <SCRIPT LANGUAGE"JvScrp1.1"> <!-- Bgn fr (vr =0; <dcumn.mgs.lngh; ++) dcumn.mgs[].nmusdwn=rgh; 70
fr (vr =0; <dcumn.lnks.lngh; ++) dcumn.lnks[].nmusdwn=rgh; // End --> </scrp> Tl cdc è ncssr prcè vng sclus l mnu dl s dsr sull mmgn (dcumn.mgs.lngh) su lnk (dcumn.lnks.lngh). L dsblzn l dl s dsr dl mus è un sluzn rdcl nn cnsglbl, qund l'unc sgnz è d vr l slvgg dgl lmn grfc. In qus cs è prfrbl srvrs d un Jvscrp ch s lm dsblr l'us dl s dsr sln qund s crc d slvr un'mmgn. In lr prl s l s vn prmu n un qulss lr pun dll pgn prduc su ff, mnr spr un'mmgn gf jpg ppr un fnsr d Alr ch vvs gnl m frm "Spcn, nn pu slvr l'mmgn". In rlà nn vn dsbl l sl pzn d slvgg dll'mmgn, m nch l lr "mps cm sfnd", "cp" "prprà", m qus è un sc ch l scrp nn rsprm. Cnsdrnd cm smp un pgn HTML sull qul s vul vr l slvgg dll'mmgn "HTML..gf", s dv, nnnzu, scrvr l sgun cdc r gl lmn <HEAD>: <SCRIPT LANGUAGE="JvScrp"> <!-- Bgn funcn prc() { lr("spcn, nn pu slvr l'mmgn"); rurn fls; funcn rp() { f(dcumn.mgs) fr(=0;<dcumn.mgs.lngh;++) dcumn.mgs[].nmusdwn = prc; // End --> </SCRIPT> L rg d cdc: lr("spcn, nn pu slvr l'mmgn"); drmn l s vsulzz dll fnsr d lr dl brwsr. Fndmnl è p nsrr l gsr nld ll'nrn dl g <BODY>: <BODY OnLd="rp()"> Snz OnLd="rp()" l scrp nn prduc su ff. Anch n qus cs ssn du md pr ggrr gl ff dll scrp: dsblr l'us d Jvscrp dl brwsr slvr l'nr dcumn cn l'pzn "slv cn nm" d Ms Inrn Explrr 5, ch slv s l s ch l mmgn. Rchmr l pgn HTML n un fnsr dl brwsr prv d lbr rslv n pr qus prblm. 71