Presun JavaScriptu z webovej stránky
Hľadanie obsahu skriptu, ktorý sa má presunúť
Getty Images/ermingut
Keď prvýkrát napíšete nový JavaScript, najjednoduchší spôsob, ako ho nastaviť, je vložiť kód JavaScript priamo do webovej stránky, aby bolo všetko na jednom mieste, zatiaľ čo testujete, aby fungoval správne. Podobne, ak na svoju webovú stránku vkladáte vopred napísaný skript, pokyny vám môžu povedať, aby ste časti alebo celý skript vložili do samotnej webovej stránky.
V prvom rade je to v poriadku na nastavenie stránky a jej správne fungovanie, ale akonáhle bude vaša stránka fungovať tak, ako chcete, budete môcť stránku vylepšiť extrahovaním JavaScriptu do externého súboru, aby vaša stránka obsah v HTML nie je tak preplnený neobsahovými položkami, ako je JavaScript.
Ak iba skopírujete a použijete JavaScripty napísané inými ľuďmi, ich pokyny na pridanie ich skriptu na vašu stránku môžu viesť k tomu, že jednu alebo viacero veľkých sekcií JavaScriptu skutočne vložíte do samotnej webovej stránky a ich pokyny nič nehovoria viete, ako môžete tento kód presunúť zo svojej stránky do samostatného súboru a stále bude fungovať JavaScript. Nemusíte sa však obávať, pretože bez ohľadu na to, aký kód JavaScript používate na svojej stránke, môžete jednoducho presunúť JavaScript zo svojej stránky a nastaviť ho ako samostatný súbor (alebo súbory, ak máte vložený viac ako jeden kód JavaScript strana). Postup je vždy rovnaký a najlepšie ho ilustruje príklad.
Pozrime sa, ako môže vyzerať časť JavaScriptu, keď je vložená na vašu stránku. Váš skutočný kód JavaScript sa bude líšiť od kódu zobrazeného v nasledujúcich príkladoch, ale postup je v každom prípade rovnaký.
Príklad 1
|_+_|Príklad dva
|_+_|Príklad tri
|_+_|Váš vložený JavaScript by mal vyzerať ako jeden z vyššie uvedených troch príkladov. Samozrejme, váš skutočný kód JavaScript sa bude líšiť od zobrazeného kódu, ale JavaScript bude pravdepodobne vložený do stránky pomocou jednej z troch vyššie uvedených metód. V niektorých prípadoch môže váš kód používať zastarané language='javascript' namiesto type='text/javascript' v takom prípade možno budete chcieť najskôr aktualizovať svoj kód nahradením atribútu jazyka typom jedna.
Predtým, ako budete môcť extrahovať JavaScript do vlastného súboru, musíte najprv identifikovať kód, ktorý sa má extrahovať. Vo všetkých troch vyššie uvedených príkladoch existujú dva riadky skutočného kódu JavaScript, ktorý sa má extrahovať. Váš skript bude mať pravdepodobne oveľa viac riadkov, ale dá sa ľahko identifikovať, pretože bude na vašej stránke zaberať rovnaké miesto ako dva riadky JavaScriptu, ktoré sme zvýraznili vo vyššie uvedených troch príkladoch (všetky tri príklady obsahujú rovnaké dva riadky JavaScript, je to len kontajner okolo nich, ktorý je mierne odlišný).
- Prvá vec, ktorú musíte urobiť, aby ste skutočne extrahovali JavaScript do samostatného súboru, je otvorenie editora obyčajného textu a prístup k obsahu vašej webovej stránky. Potom musíte nájsť vložený kód JavaScript, ktorý bude obklopený jednou z variácií kódu zobrazených v príkladoch vyššie.
- Po nájdení kódu JavaScript ho musíte vybrať a skopírovať do schránky. Vo vyššie uvedenom príklade je kód, ktorý sa má vybrať, zvýraznený, nemusíte vyberať značky skriptu ani voliteľné komentáre, ktoré sa môžu objaviť okolo kódu JavaScript.
- Otvorte ďalšiu kópiu editora obyčajného textu (alebo inú kartu, ak váš editor podporuje otváranie viacerých súborov naraz) a vložte tam obsah JavaScript.
- Vyberte popisný názov súboru, ktorý sa má použiť pre nový súbor, a uložte nový obsah pomocou tohto súboru. Pomocou príkladu kódu je účelom skriptu vylomiť rámce, aby mohol byť vhodný názov framebreak.js .
- Takže teraz máme JavaScript v samostatnom súbore, vrátime sa do editora, kde máme pôvodný obsah stránky, aby sme tam urobili zmeny, aby sme odkazovali na externú kópiu skriptu.
- Keďže teraz máme skript v samostatnom súbore, môžeme odstrániť všetko medzi značkami skriptu v našom pôvodnom obsahu, takže
- Posledným krokom je pridanie ďalšieho atribútu do značky skriptu, ktorý identifikuje, kde môže nájsť externý JavaScript. Robíme to pomocou a src='názov súboru' atribút. S naším vzorovým skriptom by sme zadali src='framebreak.js'.
- Jedinou komplikáciou je, ak sme sa rozhodli ukladať externé JavaScripty do oddeleného priečinka od webových stránok, ktoré ich používajú. Ak to urobíte, musíte pred názov súboru pridať cestu z priečinka webovej stránky do priečinka JavaScript. Napríklad, ak sú JavaScripty uložené v a js priečinok v priečinku, ktorý obsahuje naše webové stránky, ktoré by sme potrebovali src='js/framebreak.js'
Ako teda vyzerá náš kód, keď sme rozdelili JavaScript do samostatného súboru? V prípade nášho príkladu JavaScriptu (za predpokladu, že JavaScript a HTML sú v rovnakom priečinku) náš HTML na webovej stránke teraz znie:
|_+_|Máme tiež samostatný súbor s názvom framebreak.js, ktorý obsahuje:
|_+_|
Váš názov súboru a obsah súboru sa budú od toho značne líšiť, pretože ste extrahovali čokoľvek JavaScript, ktorý bol vložený na vašu webovú stránku, a súboru priradíte popisný názov podľa toho, čo robí. Skutočný proces extrakcie bude rovnaký, aj keď bez ohľadu na to, aké riadky obsahuje.
A čo tie ďalšie dva riadky v každom z príkladov dva a tri? Účelom týchto riadkov v príklade 2 je skryť JavaScript z Netscape 1 a Internet Explorera 2, pričom ani jeden z nich už nikto nepoužíva, takže tieto riadky nie sú v prvom rade potrebné. Umiestnením kódu do externého súboru sa kód skryje pred prehliadačmi, ktoré značke skriptu nerozumejú efektívnejšie, ako keby ju aj tak obklopili v komentári HTML. Tretí príklad sa používa pre XHTML stránky, aby povedal validátorom, že JavaScript by sa mal považovať za obsah stránky a nie na jeho validáciu ako HTML (ak používate HTML doctype a nie XHTML, potom validátor už vie toto a tak aj tieto značky nie sú potrebné). S JavaScriptom v samostatnom súbore už na stránke nie je žiadny JavaScript, ktorý by validátori preskočili, takže tieto riadky už nie sú potrebné.
Jedným z najužitočnejších spôsobov, ako možno použiť JavaScript na pridanie funkcií na webovú stránku, je vykonať určitý druh spracovania v reakcii na akciu vášho návštevníka. Najčastejšou akciou, na ktorú chcete reagovať, bude, keď daný návštevník na niečo klikne. Obsluha udalosti, ktorá vám umožňuje reagovať na kliknutie návštevníkov na niečo, sa nazýva po kliknutí .
Keď väčšina ľudí prvýkrát premýšľa o pridaní obsluhy udalosti onclick na svoju webovú stránku, okamžite ich napadne pridať ju na stránku tag. To dáva kus kódu, ktorý často vyzerá takto:
|_+_|
To je nesprávne spôsob, ako použiť onclick, pokiaľ nemáte skutočnú zmysluplnú adresu v atribúte href, takže tí, ktorí nemajú JavaScript, sa po kliknutí na odkaz niekam presunú. Mnoho ľudí tiež vynecháva z tohto kódu „return false“ a potom sa čudujú, prečo sa po spustení skriptu vždy načíta horná časť aktuálnej stránky (čo je to, čo href='#' hovorí stránke, aby urobila, pokiaľ Všetky obslužné programy udalostí vrátia hodnotu false. Samozrejme, ak máte ako cieľ odkazu niečo zmysluplné, možno budete chcieť ísť tam po spustení kódu onclick a potom nebudete potrebovať „return false“.
Mnoho ľudí si neuvedomuje, že je možné pridať obsluhu udalosti onclick akýkoľvek HTML tag na webovej stránke za účelom interakcie, keď váš návštevník klikne na daný obsah. Ak teda chcete, aby sa niečo spustilo, keď ľudia kliknú na obrázok, môžete použiť:
|_+_|
Ak chcete niečo spustiť, keď ľudia kliknú na nejaký text, môžete použiť:
|_+_|Samozrejme, neposkytujú automatickú vizuálnu stopu, že ak na ne váš návštevník klikne tak, ako na odkaz, dôjde k odozve, ale túto vizuálnu stopu môžete pridať sami dostatočne jednoduchým prispôsobením obrázka alebo vhodným rozpätím.
Ďalšou vecou, ktorú je potrebné poznamenať o týchto spôsoboch pripojenia obsluhy udalosti onclick, je to, že nevyžadujú „return false“, pretože neexistuje žiadna predvolená akcia, ktorá sa stane, keď sa klikne na prvok, ktorý je potrebné deaktivovať.
Tieto spôsoby pripojenia onclick sú veľkým vylepšením zlej metódy, ktorú mnohí ľudia používajú, ale stále je to ďaleko od toho, aby to bol najlepší spôsob kódovania. Jedným z problémov pri pridávaní onclick pomocou ktorejkoľvek z vyššie uvedených metód je, že stále mieša váš JavaScript s vaším HTML. po kliknutí je nie atribút HTML, ide o obsluhu udalosti JavaScriptu. Preto, aby sme oddelili náš JavaScript od nášho HTML, aby sa stránka ľahšie udržiavala, musíme dostať odkaz na kliknutie zo súboru HTML do samostatného súboru JavaScript, kam patrí.
Najjednoduchší spôsob, ako to urobiť, je nahradiť onclick v HTML kódom id to uľahčí pripojenie obsluhy udalosti na príslušné miesto v HTML. Takže náš kód HTML môže teraz obsahovať jeden z týchto príkazov:
|_+_|Potom môžeme kód JavaScript zakódovať v samostatnom súbore JavaScript, ktorý je buď prepojený v spodnej časti tela stránky, alebo ktorý je v hlavičke stránky a kde sa náš kód nachádza vo funkcii, ktorá sa sama volá po dokončení načítania stránky. . Náš JavaScript na pripojenie obslužných programov udalostí teraz vyzerá takto:
|_+_|Treba poznamenať jednu vec. Všimnete si, že onclick sme vždy písali celé malými písmenami. Pri kódovaní príkazu vo svojom HTML uvidíte, že niektorí ľudia ho napíšu ako onClick. Toto je nesprávne, pretože názvy obslužných nástrojov udalostí JavaScript sú všetky malé písmená a neexistuje žiadny obslužný nástroj ako onClick. Prejde vám to, keď zahrniete JavaScript priamo do svojej značky HTML, pretože HTML nerozlišuje veľké a malé písmená a prehliadač ho namapuje na správny názov. V samotnom JavaScripte nemôžete uniknúť nesprávnej kapitalizácii, pretože JavaScript rozlišuje veľké a malé písmená a v JavaScripte neexistuje nič také ako onClick.
Tento kód je obrovským zlepšením oproti predchádzajúcim verziám, pretože teraz pripájame udalosť k správnemu prvku v našom HTML a máme JavaScript úplne oddelený od HTML. V tomto sa však môžeme ešte zlepšiť.
Jediným problémom, ktorý zostáva, je, že ku konkrétnemu prvku môžeme pripojiť iba jednu obsluhu udalosti onclick. Ak by sme kedykoľvek potrebovali pripojiť inú obsluhu udalosti onclick k rovnakému prvku, predtým pripojené spracovanie už nebude k tomuto prvku pripojené. Keď na svoju webovú stránku pridávate množstvo rôznych skriptov na rôzne účely, existuje prinajmenšom možnosť, že dva alebo viac z nich bude chcieť vykonať určité spracovanie, keď sa klikne na rovnaký prvok. Zložitým riešením tohto problému je identifikovať, kde k tejto situácii dochádza, a skombinovať spracovanie, ktoré je potrebné volať, do funkcie, ktorá vykonáva celé spracovanie.
Zatiaľ čo kolízie tohto typu sú pri onclick menej časté ako pri onload, povinnosť identifikovať kolízie vopred a kombinovať ich nie je ideálnym riešením. Vôbec nejde o riešenie, keď sa skutočné spracovanie, ktoré je potrebné k prvku pripojiť, v priebehu času mení, takže niekedy je potrebné urobiť jednu vec, inokedy inú a niekedy oboje.
Najlepším riešením je úplne prestať používať obsluhu udalosti a namiesto toho použiť poslucháč udalostí JavaScript (spolu so zodpovedajúcou udalosťou attachmentEvent pre Jscript – pretože toto je jedna zo situácií, kde sa JavaScript a JScript líšia). Najjednoduchšie to môžeme urobiť tak, že najprv vytvoríme funkciu addEvent, ktorá pridá buď poslucháča udalostí, alebo prílohu v závislosti od toho, ktorý z týchto dvoch jazykov podporuje spustený jazyk;
|_+_|Teraz môžeme pripojiť spracovanie, ktoré sa má uskutočniť, keď sa klikne na náš prvok pomocou:
|_+_|Použitie tejto metódy pripojenia kódu, ktorý sa má spracovať, keď sa klikne na prvok, znamená, že ďalšie volanie addEvent na pridanie ďalšej funkcie, ktorá sa má spustiť po kliknutí na konkrétny prvok, nenahradí predchádzajúce spracovanie novým spracovaním, ale umožní obe funkcie, ktoré sa majú spustiť. Pri volaní addEvent nemusíme vedieť, či už máme k prvku pripojenú funkciu, ktorá sa má spustiť po kliknutí naň, nová funkcia sa spustí spolu s funkciami, ktoré boli predtým pripojené.
Ak by sme potrebovali možnosť odstrániť funkcie z toho, čo sa spustí, keď sa klikne na prvok, potom by sme mohli vytvoriť zodpovedajúcu funkciu deleteEvent, ktorá zavolá príslušnú funkciu na odstránenie poslucháča udalostí alebo pripojenej udalosti?
Jedinou nevýhodou tohto posledného spôsobu pripojenia spracovania je, že skutočne staré prehliadače nepodporujú tieto relatívne nové spôsoby pripojenia spracovania udalostí k webovej stránke. V súčasnosti by malo byť dosť ľudí, ktorí používajú takéto zastarané prehliadače, aby ich ignorovali v tom, čo píšeme J(ava)Script, okrem toho, že náš kód píšeme tak, aby to nespôsobovalo veľké množstvo chybových hlásení. Vyššie uvedená funkcia je napísaná tak, aby nerobila nič, ak nie je podporovaný ani jeden zo spôsobov, ktoré používa. Väčšina z týchto skutočne starých prehliadačov nepodporuje ani metódu getElementById odkazovania na HTML, a preto je if (!document.getElementById) vráti hodnotu false; v hornej časti ktorejkoľvek z vašich funkcií, ktoré takéto volania vykonávajú, by bolo tiež vhodné. Samozrejme, mnohí ľudia, ktorí píšu JavaScript, nie sú takí ohľaduplní k tým, ktorí stále používajú starožitné prehliadače, a preto si títo používatelia musia zvyknúť na to, že na takmer každej webovej stránke, ktorú doteraz navštívia, sa budú zobrazovať chyby JavaScriptu.
Ktorý z týchto rôznych spôsobov používate na pripojenie spracovania k vašej stránke, ktoré sa má spustiť, keď vaši návštevníci na niečo kliknú? Ak je spôsob, akým to robíte, bližšie k príkladom v hornej časti stránky ako k príkladom v dolnej časti stránky, možno je načase, aby ste sa zamysleli nad zlepšením spôsobu, akým píšete svoje spracovanie po kliknutí, aby ste použili jednu z lepších metód uvedené nižšie na stránke.
Pri pohľade na kód pre prijímač udalostí naprieč prehliadačmi si všimnete, že existuje štvrtý parameter, ktorý sme nazvali uC , ktorého použitie nie je zrejmé z predchádzajúceho popisu.
Prehliadače majú dve rôzne poradia, v ktorých môžu spracovávať udalosti, keď je udalosť spustená. Môžu pracovať zvonku dovnútra od značky smerom k značke, ktorá spustila udalosť, alebo môžu pracovať zvnútra smerom k najšpecifickejšej značke. Títo dvaja sú tzv zachytiť a bublina a väčšina prehliadačov vám umožňuje vybrať si, v akom poradí sa má spustiť viacnásobné spracovanie, nastavením tohto extra parametra.
- uC = true to process počas fázy zachytávania
- uC = false na spracovanie počas bublinovej fázy.
Takže tam, kde je okolo značky, ku ktorej bola udalosť spustená vo fáze zachytávania, omotaných niekoľko ďalších značiek, sa najskôr spustí najvzdialenejšia značka a presunie sa k tej, ktorá spustila udalosť, a potom, keď sa značka, ku ktorej bola udalosť pripojená, spracuje. bublinková fáza obráti proces a opäť sa vráti von.
Internet Explorer a tradičné obslužné programy udalostí vždy spracovávajú bublinovú fázu a nikdy nie fázu zachytávania, a preto vždy začínajú s najšpecifickejšou značkou a postupujú smerom von.
Takže s obsluhou udalostí:
|_+_|kliknutím na xx by vybublala a spustila by výstrahu ('b') ako prvú a výstrahu ('a') ako druhú.
Ak by boli tieto upozornenia pripojené pomocou poslucháčov udalostí s hodnotou uC true, všetky moderné prehliadače okrem Internet Explorera by najskôr spracovali upozornenie ('a') a potom upozornenie ('b').