„JavaScript“ perkėlimas iš tinklalapio
Rasti scenarijaus turinį, kurį reikia perkelti
Getty Images/ermingutas
Kai pirmą kartą rašote naują „JavaScript“, paprasčiausias būdas jį nustatyti – įterpti „JavaScript“ kodą tiesiai į tinklalapį, kad viskas būtų vienoje vietoje, kol bandysite, kad jis tinkamai veiktų. Panašiai, jei į savo svetainę įterpiate iš anksto parašytą scenarijų, instrukcijose gali būti nurodyta įterpti dalis arba visą scenarijų į patį tinklalapį.
Tai yra gerai, jei norite nustatyti puslapį ir pradėti jį tinkamai veikti, bet kai jūsų puslapis veiks taip, kaip norite, galėsite patobulinti puslapį ištraukdami JavaScript į išorinį failą, kad jūsų puslapis HTML turinys nėra perkrautas ne turinio elementais, pvz., „JavaScript“.
Jei tiesiog nukopijuojate ir naudojate kitų žmonių parašytus „JavaScript“, jų nurodymai, kaip pridėti savo scenarijų į puslapį, gali lemti tai, kad viena ar kelios didelės „JavaScript“ dalys iš tikrųjų buvo įterptos į patį tinklalapį, o jų instrukcijos to nepasako. kaip galite perkelti šį kodą iš savo puslapio į atskirą failą ir išlaikyti JavaScript. Nesijaudinkite, nes nepaisant to, kokį JavaScript kodą naudojate savo puslapyje, galite lengvai perkelti JavaScript iš savo puslapio ir nustatyti jį kaip atskirą failą (arba failus, jei įterpta daugiau nei viena JavaScript dalis puslapis). Procesas, kaip tai padaryti, visada yra vienodas ir geriausiai iliustruojamas pavyzdžiu.
Pažiūrėkime, kaip „JavaScript“ dalis gali atrodyti įterpta į jūsų puslapį. Jūsų tikrasis „JavaScript“ kodas skirsis nuo parodyto toliau pateiktuose pavyzdžiuose, tačiau procesas visais atvejais yra toks pat.
Pirmas pavyzdys
|_+_|Antras pavyzdys
|_+_|Trečias pavyzdys
|_+_|Jūsų įterptasis „JavaScript“ turėtų atrodyti panašiai kaip vienas iš trijų aukščiau pateiktų pavyzdžių. Žinoma, jūsų tikrasis „JavaScript“ kodas skirsis nuo rodomo, tačiau „JavaScript“ tikriausiai bus įterptas į puslapį naudojant vieną iš pirmiau nurodytų trijų metodų. Kai kuriais atvejais jūsų kode gali būti naudojamas pasenęs language='javascript' vietoj type='text/javascript' Tokiu atveju galbūt norėsite atnaujinti savo kodą, pakeisdami kalbos atributą į tipą.
Kad galėtumėte išskleisti JavaScript į savo failą, pirmiausia turite nustatyti kodą, kurį norite išgauti. Visuose trijuose aukščiau pateiktuose pavyzdžiuose yra dvi tikrojo „JavaScript“ kodo eilutės, kurias reikia išgauti. Jūsų scenarijus tikriausiai turės daug daugiau eilučių, bet jį galima lengvai atpažinti, nes jis užims tą pačią vietą jūsų puslapyje kaip dvi JavaScript eilutės, kurias paryškinome trijuose aukščiau pateiktuose pavyzdžiuose (visuose trijuose pavyzdžiuose yra tos pačios dvi eilutės „JavaScript“, tik aplink juos esantis konteineris šiek tiek skiriasi).
- Pirmas dalykas, kurį turite padaryti, kad iš tikrųjų ištrauktumėte „JavaScript“ į atskirą failą, yra atidaryti paprasto teksto rengyklę ir pasiekti savo tinklalapio turinį. Tada turite rasti įterptąjį „JavaScript“, kuris bus apsuptas vienu iš pirmiau pateiktuose pavyzdžiuose pateiktų kodo variantų.
- Suradę JavaScript kodą, turite jį pasirinkti ir nukopijuoti į mainų sritį. Aukščiau pateiktame pavyzdyje pasirenkamas kodas yra paryškintas, jums nereikia pasirinkti scenarijaus žymų ar pasirenkamų komentarų, kurie gali būti rodomi aplink „JavaScript“ kodą.
- Atidarykite kitą paprasto teksto rengyklės kopiją (arba kitą skirtuką, jei redagavimo priemonė palaiko daugiau nei vieno failo atidarymą vienu metu) ir įterpkite ten „JavaScript“ turinį.
- Pasirinkite aprašomąjį failo pavadinimą, kurį naudosite naujam failui, ir išsaugokite naują turinį naudodami tą failo pavadinimą. Naudojant pavyzdinį kodą, scenarijaus tikslas yra išsiskirti iš rėmelių, kad galėtų būti tinkamas pavadinimas framebreak.js .
- Taigi dabar turime „JavaScript“ atskirame faile, mes grįžtame į redaktorių, kur turime pradinį puslapio turinį, kad padarytume pakeitimus ir susietume su išorine scenarijaus kopija.
- Kadangi dabar scenarijų turime atskirame faile, galime pašalinti viską tarp scenarijaus žymų mūsų pradiniame turinyje, kad
- Paskutinis veiksmas yra pridėti papildomą atributą prie scenarijaus žymos, nurodančio, kur ji gali rasti išorinį „JavaScript“. Mes tai darome naudodami a src='failo pavadinimas' atributas. Naudodami pavyzdinį scenarijų nurodytume src='framebreak.js'.
- Vienintelė komplikacija yra tai, jei nusprendėme išorinius „JavaScript“ saugoti atskirame aplanke nuo juos naudojančių tinklalapių. Jei tai padarysite, prieš failo pavadinimą turėsite pridėti kelią iš tinklalapio aplanko į JavaScript aplanką. Pavyzdžiui, jei „JavaScript“ saugomi a js aplanką aplanke, kuriame yra mūsų tinklalapiai, kurių mums prireiks src='js/framebreak.js'
Taigi, kaip atrodo mūsų kodas, kai „JavaScript“ atskiriame į atskirą failą? Mūsų pavyzdyje „JavaScript“ (darant prielaidą, kad „JavaScript“ ir HTML yra tame pačiame aplanke) mūsų HTML tinklalapyje dabar yra toks:
|_+_|Taip pat turime atskirą failą framebreak.js, kuriame yra:
|_+_|
Jūsų failo pavadinimas ir failo turinys labai skirsis nuo to, nes ištrauksite bet kokią „JavaScript“, kuri buvo įterpta į jūsų tinklalapį, ir suteikėte failui aprašomąjį pavadinimą pagal tai, ką jis daro. Tikrasis jo išgavimo procesas bus toks pat, nepaisant to, kokios eilutės jame yra.
O kaip tos kitos dvi eilutės kiekviename iš antrojo ir trečiojo pavyzdžių? Na, antrojo pavyzdžio tų eilučių tikslas yra paslėpti „JavaScript“ nuo „Netscape 1“ ir „Internet Explorer 2“, kurių niekas daugiau nenaudoja, todėl tų eilučių iš tikrųjų nereikia. Įdėjus kodą į išorinį failą, kodas nuo naršyklių, kurios nesupranta scenarijaus žymos, paslepiamas efektyviau, nei bet kuriuo atveju įtraukiant jį į HTML komentarą. Trečiasis pavyzdys naudojamas XHTML puslapiams, siekiant nurodyti tikrintojams, kad „JavaScript“ turi būti traktuojamas kaip puslapio turinys, o ne patvirtinti jį kaip HTML (jei naudojate HTML doctype, o ne XHTML, tikrintuvas jau žino tai ir tos žymos nėra reikalingi). Jei „JavaScript“ yra atskirame faile, puslapyje nebėra jokio „JavaScript“, kurį turėtų praleisti tikrintojai, todėl šios eilutės nebereikalingos.
Vienas iš naudingiausių būdų, kaip „JavaScript“ gali būti naudojamas tinklalapio funkcionalumui pridėti, yra atlikti tam tikrą apdorojimą reaguojant į jūsų lankytojo veiksmą. Dažniausias veiksmas, į kurį norite reaguoti, yra tada, kai tas lankytojas ką nors spustelėja. Įvykių tvarkyklė, leidžianti reaguoti į lankytojų spustelėjimus, vadinama paspaudus .
Kai dauguma žmonių pirmą kartą galvoja apie „onclick“ įvykių tvarkyklės įtraukimą į savo tinklalapį, jie iš karto galvoja apie tai, kaip jį pridėti žyma. Tai suteikia kodo dalį, kuri dažnai atrodo taip:
|_+_|
Tai yra negerai būdas naudoti onclick, nebent atribute href yra tikras prasmingas adresas, kad tie, kurie neturi „JavaScript“, būtų kur nors perkelti, kai spustelėja nuorodą. Daugelis žmonių iš šio kodo taip pat nepalieka „return false“ ir stebisi, kodėl dabartinio puslapio viršus visada įkeliamas pasibaigus scenarijui (tai yra tai, ką href='#' nurodo puslapiui, nebent „false“ grąžinamas iš visų įvykių tvarkytojų. Žinoma, jei nuorodos paskirties vieta yra kažkas prasmingo, galbūt norėsite ten patekti paleidę onclick kodą ir tada jums nereikės „return false“.
Daugelis žmonių nesuvokia, kad prie „onclick“ įvykių tvarkyklės galima pridėti bet koks HTML žymą tinklalapyje, kad galėtumėte sąveikauti, kai lankytojas spustelėja tą turinį. Taigi, jei norite, kad kažkas būtų paleista žmonėms spustelėjus vaizdą, galite naudoti:
|_+_|
Jei norite ką nors paleisti žmonėms spustelėjus tekstą, galite naudoti:
|_+_|Žinoma, tai nesuteikia automatinio vaizdinio užuominos, kad lankytojui spustelėjus juos taip, kaip daroma nuoroda, bus atsakas, bet jūs galite pakankamai lengvai pridėti tą vaizdinį užuominą, atitinkamai pritaikydami vaizdo stilių arba diapazoną.
Kitas dalykas, į kurį reikia atkreipti dėmesį apie šiuos onclick įvykių tvarkyklės pridėjimo būdus, yra tai, kad jiems nereikia „return false“, nes nėra numatytojo veiksmo, kuris įvyktų spustelėjus elementą, kurį reikia išjungti.
Šie onclick pridėjimo būdai yra didelis daugelio žmonių naudojamo prasto metodo patobulinimas, tačiau tai dar toli nuo geriausio būdo koduoti. Viena iš problemų, susijusių su „onclick“ pridėjimu naudojant bet kurį iš aukščiau pateiktų metodų, yra ta, kad jis vis dar maišo „JavaScript“ su HTML. paspaudus yra ne HTML atributas, tai yra JavaScript įvykių tvarkyklė. Norėdami atskirti „JavaScript“ nuo HTML, kad puslapį būtų lengviau prižiūrėti, turime perkelti „onclick“ nuorodą iš HTML failo į atskirą „JavaScript“ failą, kur ji priklauso.
Lengviausias būdas tai padaryti yra pakeisti onclick HTML id tai leis lengvai prijungti įvykių tvarkyklę į atitinkamą HTML vietą. Taigi mūsų HTML dabar gali būti vienas iš šių teiginių:
|_+_|Tada galime užkoduoti „JavaScript“ atskirame „JavaScript“ faile, kuris yra susietas su puslapio turinio apačioje arba yra puslapio antraštėje ir kuriame mūsų kodas yra funkcijos viduje, kuri pati iškviečiama baigus įkelti puslapį. . Mūsų „JavaScript“, skirtas pridėti įvykių tvarkykles, dabar atrodo taip:
|_+_|Reikia atkreipti dėmesį į vieną dalyką. Pastebėsite, kad onclick visada rašėme tik mažosiomis raidėmis. Koduodami teiginį savo HTML pamatysite, kad kai kurie žmonės jį rašo kaip onClick. Tai neteisinga, nes „JavaScript“ įvykių tvarkyklių pavadinimai rašomi mažosiomis raidėmis ir nėra tokios tvarkyklės kaip onClick. Galite apsisaugoti, jei į HTML žymą įtrauksite „JavaScript“, nes HTML neskiria didžiųjų ir mažųjų raidžių, o naršyklė susies jį su tinkamu pavadinimu. Negalite išvengti netinkamo didžiųjų raidžių rašymo pačiame „JavaScript“, nes „JavaScript“ yra didžiosios ir mažosios raidės, o „JavaScript“ nėra tokio dalyko kaip onClick.
Šis kodas yra didžiulis patobulinimas, palyginti su ankstesnėmis versijomis, nes dabar įvykį pridedame prie tinkamo HTML elemento ir turime visiškai atskirtą nuo HTML JavaScript. Tačiau mes galime tai dar labiau pagerinti.
Viena likusi problema yra ta, kad prie konkretaus elemento galime pridėti tik vieną onclick įvykių tvarkyklę. Jei prie to paties elemento bet kuriuo metu turėtume pridėti kitą onclick įvykių tvarkyklę, anksčiau pridėtas apdorojimas nebebus pridedamas prie to elemento. Kai į savo tinklalapį pridedate įvairių scenarijų skirtingais tikslais, bent jau yra tikimybė, kad du ar daugiau iš jų norės atlikti tam tikrą apdorojimą, kuris turi būti atliktas spustelėjus tą patį elementą. Netvarkingas šios problemos sprendimas yra nustatyti, kur susidaro ši situacija, ir suderinti apdorojimą, kurį reikia suvienyti su funkcija, kuri atlieka visą apdorojimą.
Nors tokie susidūrimai yra retesni naudojant „onclick“ nei „onload“, iš anksto nustatyti susidūrimus ir juos sujungti nėra idealus sprendimas. Tai visai nėra sprendimas, kai tikrasis apdorojimas, kurį reikia prijungti prie elemento, laikui bėgant keičiasi taip, kad kartais reikia atlikti vieną, kartais kitą, o kartais ir vieną, ir kitą.
Geriausias sprendimas yra visiškai nustoti naudoti įvykių tvarkyklę, o vietoj jos naudoti JavaScript įvykių klausytoją (kartu su atitinkamu Jscript įvykiu, nes tai yra viena iš tų situacijų, kai JavaScript ir JScript skiriasi). Tai galime padaryti lengviausia pirmiausia sukūrę funkciją addEvent, kuri pridės įvykių klausytoją arba priedą, priklausomai nuo to, kurią iš dviejų palaiko paleista kalba;
|_+_|Dabar galime pridėti apdorojimą, kurio norime, kad įvyktų, kai spustelėsite mūsų elementą naudodami:
|_+_|Naudojant šį kodo, kuris bus apdorojamas spustelėjus elementą, pridėjimo metodą reiškia, kad dar vienas addEvent iškvietimas, kad būtų pridėta kita funkcija, kuri bus paleista spustelėjus konkretų elementą, ankstesnis apdorojimas nepakeis nauju apdorojimu, bet leis. abi turimos vykdyti funkcijos. Nereikia žinoti, kai iškviečiame addEvent, ar jau turime prie elemento prijungtą funkciją, kuri paleidžiama jį spustelėjus. Naujoji funkcija bus paleista kartu su anksčiau pridėtomis funkcijomis.
Ar mums reikia galimybės pašalinti funkcijas iš to, kas paleidžiama spustelėjus elementą, tada galėtume sukurti atitinkamą deleteEvent funkciją, kuri iškviečia atitinkamą funkciją, skirtą įvykių klausytojui arba pridedamam įvykiui pašalinti?
Vienas šio paskutinio apdorojimo prijungimo būdo trūkumas yra tas, kad tikrai senos naršyklės nepalaiko šių santykinai naujų įvykių apdorojimo prijungimo prie tinklalapio būdų. Šiuo metu turėtų būti pakankamai mažai žmonių, naudojančių tokias pasenusias naršykles, kad jų nepaisytų J(ava)Script, kurį rašome, išskyrus kodo rašymą taip, kad tai nesukeltų daugybės klaidų pranešimų. Aukščiau pateikta funkcija parašyta taip, kad nieko neveiktų, jei nepalaikomas nė vienas iš jos naudojamų būdų. Dauguma šių tikrai senų naršyklių taip pat nepalaiko HTML nuorodų metodo getElementById, todėl paprasta if (!document.getElementById) return false; taip pat būtų tinkama bet kurios iš jūsų funkcijų, atliekančių tokius skambučius, viršuje. Žinoma, daugelis žmonių, rašančių „JavaScript“, nėra tokie dėmesingi tiems, kurie vis dar naudoja senovines naršykles, todėl šie vartotojai turi būti pripratę matyti „JavaScript“ klaidas beveik kiekviename tinklalapyje, kurį lanko.
Kurį iš šių skirtingų būdų naudojate, kad pridėtumėte apdorojimą prie savo puslapio, kuris būtų paleistas lankytojams spustelėjus ką nors? Jei tai darote arčiau puslapio viršuje pateiktų pavyzdžių, o ne puslapio apačioje, galbūt laikas pagalvoti apie tai, kaip patobulinti rašymo būdą, kaip rašyti „onclick“ apdorojimą ir naudoti vieną iš geresnių metodų. pateiktas puslapio apačioje.
Žvelgdami į kelių naršyklių įvykių klausytojo kodą pastebėsite, kad yra ketvirtasis parametras, kurį mes iškvietėme uC , kurio naudojimas nėra akivaizdus iš ankstesnio aprašymo.
Naršyklės turi dvi skirtingas tvarkas, pagal kurias jos gali apdoroti įvykius, kai įvykis suaktyvinamas. Jie gali veikti iš išorės į vidų nuo žymos iki žymos, kuri suaktyvino įvykį, arba gali veikti iš vidaus, pradedant nuo konkretiausios žymos. Šie du vadinami užfiksuoti ir burbulas atitinkamai ir daugumoje naršyklių, nustatant šį papildomą parametrą, galima pasirinkti, kuris užsakymo kelių apdorojimas turi būti vykdomas.
- uC = teisingas apdorojimas fiksavimo etape
- uC = false apdoroti burbulo fazės metu.
Taigi, kai aplink žymą, su kuria buvo suaktyvintas įvykis fiksavimo fazėje, yra apvyniotos kelios kitos žymos, pirmiausia paleidžiama pradedant nuo tolimiausios žymos ir pereinama link tos, kuri suaktyvino įvykį, o tada, kai žyma, prie kurios buvo pridėtas įvykis, yra apdorota. burbulo fazė apverčia procesą ir vėl užgęsta.
„Internet Explorer“ ir tradicinės įvykių tvarkyklės visada apdoroja burbulo fazę, o ne fiksavimo fazę, todėl visada pradėkite nuo konkretiausios žymos ir nukreipkite ją į išorę.
Taigi su įvykių tvarkytojais:
|_+_|paspaudę ant xx pirmą kartą suaktyvintų įspėjimą („b“), o po to – įspėjimą („a“).
Jei tie įspėjimai buvo pridėti naudojant įvykių klausytojus su „uC true“, visos šiuolaikinės naršyklės, išskyrus „Internet Explorer“, pirmiausia apdorotų įspėjimą („a“), o po to – įspėjimą („b“).