Tasteri nisu aktivni u sufd. Brisanje privremene memorije nije uspjelo
- Prevod
JavaScript može biti noćna mora za otklanjanje grešaka: neke od grešaka koje donosi mogu biti veoma teške za razumevanje na prvi pogled, a ni brojevi linija koje proizvodi nisu uvek od pomoći. Zar ne bi bilo korisno imati listu koju možete pogledati da biste razumjeli značenje grešaka i kako ih ispraviti? Evo ga!
Ispod je lista čudnih grešaka u JavaScriptu. Različiti pretraživači mogu proizvesti različite poruke o grešci za istu grešku, pa je dato nekoliko primjera gdje je to moguće.
Kako čitati greške? Prije same liste, pogledajmo na brzinu strukturu poruke o grešci. Razumijevanje strukture pomaže vam da shvatite greške, a ući ćete u manje problema ako naiđete na greške koje nisu navedene na ovoj listi.Tipična greška iz Chromea izgleda ovako:
Uncaught TypeError: undefined nije funkcija
Struktura greške je sljedeća:
Sada na same greške.
Uncaught TypeError: undefined nije funkcija Povezane greške: broj nije funkcija, objekt nije funkcija, niz nije funkcija, neobrađena greška: 'foo' nije funkcija, očekivana funkcijaPojavljuje se kada se pokuša pozvati vrijednost kao funkcija kada vrijednost nije funkcija. Na primjer:
Var foo = nedefinisano; foo();
Ova greška se obično javlja ako pokušavate pozvati funkciju na objektu, ali ste pogrešno napisali ime.
Var x = document.getElementByID("foo");
Svojstva nepostojećeg objekta su podrazumevano postavljena na nedefinisana, što dovodi do ove greške.
Druge varijacije, kao što je "broj nije funkcija", javljaju se kada pokušavate da pozovete broj kao da je funkcija.
Kako popraviti grešku: Provjerite je li naziv funkcije ispravan. Za ovu grešku, broj linije obično ukazuje na ispravnu lokaciju.
Neuhvaćena ReferenceError: Nevažeća lijeva strana u dodjeli Srodne greške: Neuhvaćeni izuzetak: ReferenceError: Ne može se dodijeliti 'functionCall()', Neuhvaćeni izuzetak: ReferenceError: Ne može se dodijeliti 'ovom'Prouzrokovano pokušajem pripisivanja značenja nečemu čemu se ne može dodijeliti značenje.
Najčešći primjer ove greške je ako uvjet:
If(doSomething() = "somevalue")
U ovom primjeru, programer je slučajno koristio jedan znak jednakosti umjesto dva. Izraz “lijeva strana u dodjeli” odnosi se na lijevu stranu znaka jednakosti, a kao što možete vidjeti u ovom primjeru, lijeva strana sadrži nešto čemu se ne može dodijeliti vrijednost, što je ono što uzrokuje grešku.
Kako ispraviti grešku: Provjerite da ne pokušavate dodijeliti vrijednost rezultatu funkcije ili ključnoj riječi this.
Neuhvaćeni TypeError: Pretvaranje kružne strukture u JSON Srodne greške: Neuhvaćeni izuzetak: TypeError: JSON.stringify: Nije aciklički objekat, TypeError: ciklička vrijednost objekta, kružna referenca u argumentu vrijednosti nije podržanaVar a = ( ); var b = ( a: a ); a.b = b; JSON.stringify(a);
Budući da a i b u gornjem primjeru imaju reference jedno na drugo, rezultirajući objekt se ne može prebaciti u JSON.
Kako popraviti grešku: Uklonite kružne reference, kao u primjeru iznad, iz svih objekata koje želite pretvoriti u JSON.
Neočekivani token ;Srodne greške: očekivano), nedostaje) nakon liste argumenataJavaScript interpretator je nešto očekivao, ali nije to tamo našao. Obično uzrokovano nedostajućim zagradama, zagradama ili uglastim zagradama.
Token u ovoj grešci može biti drugačiji - može biti napisano "Neočekivani token ]", "Očekivano (" ili nešto drugo.
Kako ispraviti grešku: Ponekad broj reda ne označava tačnu lokaciju, što otežava ispravljanje greške.
Greška sa ( ) () obično je uzrokovana neusklađenim parom. Provjerite da li sve vaše zagrade imaju završni par. U ovom slučaju, broj reda obično ukazuje na nešto drugo osim na problematičan znak.
Neočekivano / povezano sa regularnim izrazima. Broj reda za ovaj slučaj je obično tačan.
Neočekivano; obično uzrokovano simbolom; unutar literala objekta ili niza, ili liste argumenata poziva funkcije. Broj reda će obično biti tačan za ovaj slučaj.
Uncaught SyntaxError: Neočekivani token NEPRAVILNO Srodne greške: Nezavršen literal niza, nevažeći terminator linijeZavršni navodnik nedostaje u literalu stringa.
Kako ispraviti grešku: Uvjerite se da svi redovi imaju ispravne završne navodnike.
Uncaught TypeError: Nije moguće pročitati svojstvo 'foo' od null, Uncaught TypeError: Nije moguće pročitati svojstvo 'foo' od nedefiniranog Povezane greške: TypeError: someVal je null, Nije moguće dobiti svojstvo 'foo' od nedefinirane ili null referenceVar someVal = null; console.log(someVal.foo);
Kako ispraviti grešku: Obično je uzrokovana greškama u kucanju. Provjerite da li su sve varijable koje se koriste u blizini linije koja ukazuje na grešku ispravno imenovane.
Učinjen je pokušaj da se napiše null ili undefined kao da je objekat. Na primjer:
Var someVal = null; someVal.foo = 1;
Kako ispraviti grešku: Ovo je također obično uzrokovano greškama. Provjerite imena varijabli pored reda koji ukazuje na grešku.
Obično uzrokovano neispravnom logikom programa, što rezultira beskonačnim rekurzivnim pozivom funkcije.
Kako ispraviti grešku: Provjerite ima li u rekurzivnim funkcijama grešaka koje mogu uzrokovati da zauvijek upućuju rekurzivne pozive.
Neuhvaćeni URIError: URI neispravan Srodne greške: URIError: pogrešno oblikovan URI sekvencaUzrokovano netočnim pozivom decodeURIComponent.
Kako popraviti grešku: Osigurajte da pozivi decodeURIComponent na liniji greške primaju valjan unos.
Ovaj problem je uvijek povezan s korištenjem XMLHttpRequest-a.
Kako ispraviti grešku: Provjerite je li traženi URL ispravan i da li zadovoljava politiku istog porijekla. Dobar način da pronađete problematičan kod je da pogledate URL u poruci o grešci i potražite ga u svom kodu.
InvalidStateError: Učinjen je pokušaj korištenja objekta koji nije ili više nije upotrebljiv. Povezane greške: InvalidStateError, DOMException code 11To znači da je kod pozvao funkciju koja nije trebala biti pozvana u svom trenutnom stanju. Obično se povezuje s XMLHttpRequest-om kada pokušava pozvati funkcije na njemu prije nego što bude spreman.
Var xhr = novi XMLHttpRequest(); xhr.setRequestHeader("Some-Header", "val");
U ovom slučaju, dobit ćete grešku jer se funkcija setRequestHeader može pozvati samo nakon što se pozove xhr.open.
Kako ispraviti grešku: Pogledajte kod na liniji koja ukazuje na grešku i uvjerite se da je pozvan u pravom trenutku ili dodaje potrebne pozive prije nje (kao kod xhr.open).
Zaključak JavaScript sadrži neke od najbeskorisnijih grešaka koje sam ikada vidio, sa izuzetkom zloglasnog Expected T_PAAMAYIM_NEKUDOTAYIM u PHP-u. Veća svijest o greškama donosi više jasnoće. Moderni pretraživači također pomažu, jer više ne proizvode potpuno beskorisne greške, kao prije.Koje su greške koje najviše zbunjuju na koje ste naišli? Podelite svoja zapažanja u komentarima.
P.S. Ovaj prijevod se može poboljšati podnošenjem PR-a.
Tagovi:
- javascript
- greške
- google chrome
- firefox
- Internet Explorer
Problem je u ovome, morate povezati skriptu izvana:
Eksterna skripta se generiše dinamički i mora se ispuniti
Po tekstu.
Primjer eksterne skripte:
pojavljuje se greška document.getElementById("v1") nema svojstva
Međutim, ako koristite ovaj kod, radi:
Window.onload= function () (document.getElementById("v1").innerHTML="ovo je dinamički tekst"; )
Problem s ovim rješenjem je što window.onload neće raditi više od 1 puta, dok HTML može sadržavati id v1, v2, v3, itd.
molim vas recite mi resenje.
poruka moderirana
Skripte i stilovi se prvo učitavaju prije nego što se stranica prikaže (što ako postoji document.write()). U skladu s tim, raščlanjivanje se događa prije renderiranja. To znači da vaš kod ne može pristupiti nepostojećem elementu. Sada, ako umjesto toga
document.getElementById("v1").innerHTML="ovo je dinamički tekst";
onda ne bi bilo problema.
Promijenite logiku punjenja.
Evgenij Petrov[dosije]
document.getElementById("v1").innerHTML="ovo je dinamički tekst";Činjenica je da se skripta može pozvati sa bilo koje stranice, pa čak i sa drugih domena.
Evgenij Petrov[dosije]
Skripte i stilovi se prvo učitavaju prije nego što se stranica prikažeStilovi - da, ali nisam siguran za skripte. Barem se nisam sreo sa ovim ranije. Obično se stranica ne analizira dalje od tačke u kojoj se nailazi na skriptu. Samo zbog nesrećnog document.write, jer možda postoje nezatvorene oznake.
David Mzareulyan[dosije]
Vidite, morat ću umetnuti ovaj obrađivač u http://localhost/my/load/1
Dakle, ako se skripta http://localhost/my/load/2 pozove na istoj stranici, onda dobijate 2 takva rukovaoca, zar vam se to ne čini čudnim?
I dalje:
Funkcija setGlobalOnLoad(f) ( var root = window.addEventListener || window.attachEvent ? prozor: document.addEventListener ? dokument: null if (root)( if(root.addEventListener) root.addEventListener("load", f, false) else if(root.attachEvent) root.attachEvent("onload", f) ) else ( if(typeof window.onload == "funkcija") ( var postojeće = window.onload window.onload = function() ( postojeće() f() ) ) else ( window.onload = f ) ) )
setGlobalOnLoad je funkcija koju treba pozvati, kako ja razumijem! Pitanje je kako?
Alexey V. Ivanov[dosije] Zamislite, pišem document.write() u eksternoj skripti. Stranica se učitala, prikazala, a zatim bam - ova skripta se konačno učitala (veza je zaglavila). Dakle, šta bi pretraživač sada trebao učiniti?
Bulat[dosije] Ne razumijem kako uvrštavate skripte na stranicu.
Šta vas sprečava da napravite 1 uobičajenu skriptu i registrujete rukovaoce u njoj?
Drugim riječima, možda imate dodan folder radnog prostora u alate za razvoj Chrome. Sada kada pokušate da izvršite promene u nekim datotekama, on postavlja zahtev sistemu datoteka. Ovo funkcionira odlično neko vrijeme. Međutim, u nekim scenarijima uklanjate mrežno mapiranje.
Zatim, kada pokušate da otvorite tu web stranicu u pretraživaču, može, ali i ne mora biti potrebno da se mrežni resursi preusmjere, a da i dalje pokušava ažurirati sistem datoteka. I to je kada dobijete ovu grešku. Nema ništa loše u vašem scenariju.
Sada jedino rješenje za ovo može biti brisanje keša i zatim ponovno pokretanje sistema. Ako problem i dalje postoji, možete jednostavno instalirati Chrome i trebalo bi ga popraviti.
Osim toga, ponekad mrežno mapiranje može uzrokovati i nekoliko drugih problema. Na primjer, da veličina CSS datoteke prelazi 75 MB ili više. Stoga morate poduzeti mjere opreza kada igrate s online podudaranjem.
Nije neophodno ako koristite Mac... ili čak Windows i imate dostupne sh komande.
sudo find / -type f -size +50000k -exec ls -lh()\; | awk "( print $9 ": " $5 )"Pritisnite ovo u svom terminalu da saznate pojedinačni krivac koji je veći od 50 MB. možete ih izbrisati.
Bilješka. Ono što gornja naredba radi je da će pronaći sve pojedinačne datoteke veće od 50MB i odštampati ih na vašem terminalu jednu po jednu.
Opće informacije
9. Prilikom potpisivanja dokumenta pojavljuje se greška “Nema certifikata/Nisu pronađeni važeći certifikati”.
Do greške može doći iz nekoliko razloga:
1) Važeći certifikati nisu instalirani - potrebno je instalirati potrebne certifikate.
2) Datum i vreme na radnoj mašini su netačni - potrebno je da podesite tačan datum i vreme!
10. Problemi sa SUFD portalom u Windows 7
Za stabilan rad SUFD Portala u operativnom sistemu Windows 7, morate pokrenuti Portal (Mozilla Firefox pretraživač) kao administrator. Da biste to uradili potrebno je da uradite sledeće:
Kliknite desnim tasterom miša na željenu prečicu (prečica pretraživača Mozilla Firefox) i izaberite "Svojstva".
Idite na karticu "Prečica", kliknite na "Napredno", potvrdite izbor u polju za potvrdu "Pokreni kao administrator" (slika 12):
Ili idite na karticu "Kompatibilnost" i označite polje za potvrdu "Pokreni ovaj program kao administrator" (slika 13):