Tasteri nisu aktivni u sufd. Brisanje privremene memorije nije uspjelo

  • JavaScript
    • 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:

  • Uncaught TypeError: Ovaj dio poruke obično nije od velike koristi. Uncaught znači da greška nije uhvaćena u hvatanju i TypeError je naziv greške.
  • undefined nije funkcija: ovo je dio o grešci. U slučaju poruka o grešci, morate ih pročitati doslovno. Na primjer, u ovom slučaju, to znači da je kod pokušao koristiti nedefiniranu vrijednost kao funkciju.
  • Drugi webkit pretraživači, kao što je Safari, proizvode greške u približno istom formatu kao i Chrome. Greške iz Firefoxa su slične, ali ne uključuju uvijek prvi dio, a novije verzije Internet Explorera također proizvode jednostavnije greške, ali u ovom slučaju jednostavnije nije uvijek bolje.

    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 funkcija

    Pojavljuje 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žana

    Var 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 argumenata

    JavaScript 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 linije

    Završ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 reference

    Var 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.

    Uncaught TypeError: Nije moguće postaviti svojstvo 'foo' od null, Uncaught TypeError: Nije moguće postaviti svojstvo 'foo' za nedefinirano Povezane greške: TypeError: someVal je nedefinirano, Nije moguće postaviti svojstvo 'foo' za nedefiniranu ili null referencu

    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.

    Uncaught RangeError: maksimalna veličina steka poziva je premašena Srodne greške: Neuhvaćen izuzetak: RangeError: Maksimalna dubina rekurzije je premašena, previše rekurzije, prekoračenje steka

    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 sekvenca

    Uzrokovano 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 11

    To 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
    Dodaj oznake

    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že

    Stilovi - 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):

    mob_info