рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХрд╕рд░ рдХрд┐рдпреЗ рдЧрдП рд╕рд╡рд╛рд▓: рднрд╛рдЧ 2

рдЫрд╡рд┐

рд▓рдЧрднрдЧ 2 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, TheShock рдФрд░ рдореИрдВрдиреЗ JavaScript FAQ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ : рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ ред рдкрд╣рд▓рд╛ рднрд╛рдЧ, рдЬреЛ рдкреНрд░рд╢реНрди рдореБрдЭреЗ рдорд┐рд▓реЗ, рд╡реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдмрд╛рдж рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдлрдПрдХреНрдпреВ: рднрд╛рдЧ 1 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рднрд╛рдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╢реЙрдХ рдЕрдм рджреВрд╕рд░реЗ рджреЗрд╢ рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╡рд╛рдм рддрдХ рдирд╣реАрдВ рд╣реИред рдЙрд╕рдиреЗ рдореБрдЭреЗ рдЙрд╕рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рддреЛ рдЙрддреНрддрд░ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╡реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рднреА рдорд┐рд▓реЗред

рдЗрд╕ рднрд╛рдЧ рдореЗрдВ:
  1. рдХреНрдпреЛрдВ рдмреБрд░рд╛рдИ рд╣реИ = рдмреБрд░рд╛рдИ?
  2. Eval рдХреЛ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ?
  3. рдлреНрд▓реИрд╢ рдХреЗ рдмрд┐рдирд╛ рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреНрд╡рдирд┐ рдХреИрд╕реЗ рдЦреЗрд▓реЗрдВ? рдХрд┐рди рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  4. рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд┐рддрдирд╛ рдзреАрдорд╛ рдХрд░рддрд╛ рд╣реИ?
  5. JS рдкрд░ рдкрд╛рда рдЪрдпрди рдХреЛ рдХреИрд╕реЗ рд░реЛрдХреЗрдВ?
  6. (рдлрд╝рдВрдХреНрд╢рди () {}) (); рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  7. рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЖрдЗрдЯрдо рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ?
  8. Ajax рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде js рдХрдорд╛рдВрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ?
  9. рдХреНрдпреЛрдВ jQuery рдкрд╛рд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рд╣реИ?
  10. рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реИ?
  11. рдХреНрдпрд╛ рдХреЛрдИ рддрддреНрд╡ рдлреЛрдХрд╕ рдШрдЯрдирд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
  12. рдХреИрд╕реЗ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ (рдлреНрд░реАрдЬ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП?
  13. рдХреНрдпрд╛ DOMElement рдХрд╛ рдХрд╕реНрдЯрдо рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдЯреИрдЧ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП?
  14. рдЖрдк рдХрд┐рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ MVC рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ?
  15. рдмрд╛рдИрдкрд╛рд╕ рдкрд░ рд░реЗрдлрд░ рдкреНрд░рддрд┐рдмрдВрдз
  16. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ GOTO
  17. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдордиреБрд╖реНрдп рдФрд░ рд╕реНрддреНрд░реА рдХреЛ рдорд╛рдирд╡ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕рд╣реА рд╣реИ
  18. рдХреНрдпрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдореЗрдВ рдЦреБрджрд╛рдИ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
  19. .Js рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рдкреНрд░рдерд╛рдПрдВ рд╣реИрдВ?
  20. рдХреНрдпрд╛ рд╕рд╛рдзрд╛рд░рдг рдбреВрдорд▓рдореЗрди (div) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DOMInputElement рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪреБрдирдирд╛ (рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛) рд╕рдВрднрд╡ рд╣реИ?
  21. рдирд┐рдЬреА рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛
  22. рдПрдХ рд╕рд╛рде рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
  23. рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ?
  24. рдХреНрдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдХреНрд░рдорд╢рдГ рдкрд╛рдпрдерди / рдЬрд╛рд╡рд╛ рд╕реЗ рд╢рдмреНрдж) рдореЗрдВ рдШреЛрд╖рдгрд╛рдУрдВ / рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдирд╛рд▓реЙрдЧ рд╣реИрдВ?

1. рдХреНрдпреЛрдВ рдмреБрд░рд╛рдИ рд╣реИ = рдмреБрд░рд╛рдИ?


1. Eval рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
2. рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ - рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд╛рдиред рдЗрд╕ рдЯреНрд░рд┐рдХ рдХреЛ рдХрд░рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
(1,eval)(code); 

рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ: eval рдПрдХ рд╣реА рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдХрд┐ рдЖрд╣реНрд╡рд╛рди рдХреА рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдмрджрд▓рддреЗ рд╣реИрдВред

3. eval рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред
4. Eval рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдЖрджрд░
рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕ред рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ?
Stackoverflow рдкрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛:
stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil
stackoverflow.com/questions/646597/eval-is-evil-so-what-should-i-use-instead
stackoverflow.com/questions/86513/why-is-using-javascript-eval-function-a-bad-idea
...

2. eval рдХреЛ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ?


Eval рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ eval рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, eval рдХреЛ рд╣рдореЗрд╢рд╛ рдирдХрд╛рд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ (JSON Parsing, Pattern Resizer)ред
Eval рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрдВрдХреНрд╢рди рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рдкреНрд░рдорд╛рдг рд╣реИ рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
 new Function('return ' + code)(); //    (1,eval)(code); 

3. рдлреНрд▓реИрд╢ рдХреЗ рдмрд┐рдирд╛ рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреНрд╡рдирд┐ рдХреИрд╕реЗ рдЦреЗрд▓реЗрдВ? рдХрд┐рди рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрд╛рдп:
 <audio src="http://developer.mozilla.org/@api/deki/files/2926/=AudioTest_(1).ogg" autoplay> Your browser does not support the <code>audio</code> element. </audio> 

рд▓реЗрдХрд┐рди рдпрд╣ HTML5 рдСрдбрд┐рдпреЛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдкреНрд░рд╛рд░реВрдк: рдУрдЧ рд╡реЛрд░рдмрд┐рд╕, WAV PCM, MP3, AAC, Speex (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд░реНрднрд░) рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдСрдбрд┐рдпреЛ рдкреНрд░рд╛рд░реВрдк рд╕рдорд░реНрдерди

рдЖрджрд░
HTML5 рдСрдбрд┐рдпреЛ рдФрд░ рдЧреЗрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдЧ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди, рд╡рд┐рдЪрд╛рд░
WHATWG - рдСрдбрд┐рдпреЛ рддрддреНрд╡
MDN - HTML рдСрдбрд┐рдпреЛ
рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг рдмрдирд╛рдирд╛
рдЙрджрд╛рд╣рд░рдг: рдСрдбрд┐рдпреЛ рдирдореВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛
рдЙрджрд╛рд╣рд░рдг: рдПрдХ рдСрдбрд┐рдпреЛ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛
рдЙрджрд╛рд╣рд░рдг: рд╡реЗрдм рдЖрдзрд╛рд░рд┐рдд рдЯреЛрди рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдирд╛

4. рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХрд┐рддрдирд╛ рдзреАрдорд╛ рдХрд░рддрд╛ рд╣реИ?


рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рдпрд╣ рдХреНрд╖рдг рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ рдФрд░ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдкреБрд░рд╛рдиреЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдкрд╣реБрдВрдЪ 2 рдЧреБрдирд╛ рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рд╣реИ: jsperf.com/global-vs-local-valiable-access
рдХреГрдкрдпрд╛ рдЗрд╕ рддрдереНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1 рдорд┐рд▓рд┐рдпрди рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ 30% рд╣реИ, рддреЛ 1 рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕ рджреБрдЦреА (рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб) рд╣реЛрдЧрд╛ред

5. рдЬреЗрдПрд╕ рдкрд░ рдкрд╛рда рдЪрдпрди рдХреЛ рдХреИрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ?


рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

1. onselectstart рдФрд░ onmousedown рд▓рд┐рдП preventDefault рдЪрд▓рд╛рдПрдБ
 var element = document.getElementById('content'); element.onselectstart = function () { return false; } element.onmousedown = function () { return false; } 

2. unselectable рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реЗрдВ
 $(document.body).attr('unselectable', 'on') 

3. user-select: none рд╢реИрд▓реА рдЬреЛрдбрд╝реЗрдВ user-select: none
 .g-unselectable { -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } 

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкрд╛рдЧрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
4. рдЯрд╛рдЗрдорд░ рд╕реЗ рд▓реЗрдХрд░ рдХреНрд▓реАрди Range, TextRange, Selection
рдореИрдВ рдирд╣реАрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдЖрдк рдпрд╣рд╛рдВ рдЪрдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд░реЗрдВрдЬ, рдЯреЗрдХреНрд╕реНрдЯрд░реЗрдВрдЬ рдФрд░ рдЪрдпрди
5. рдХреИрдирд╡рд╛рд╕ рдкрд░ рд░реЗрдВрдбрд░ рдЯреЗрдХреНрд╕реНрдЯ
6. рд╡рд┐рдХрд▓рд╛рдВрдЧ рдЯреЗрдХреНрд╕рд╛рд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
 <textarea disabled="disabled" style="border:none;color:#000;background:#fff; font-family:Arial;">      JS? </textarea> 

рдпрд╣рд╛рдБ 1-3 рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ jQuery рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдЗрдХреНрд░реЛ рдкреНрд▓рдЧрдЗрди рд╣реИ
 $.fn.disableSelection = function() { function preventDefault () { return false; } $(this).attr('unselectable', 'on') .css('-moz-user-select', 'none') .css('-khtml-user-select', 'none') .css('-o-user-select', 'none') .css('-msie-user-select', 'none') .css('-webkit-user-select', 'none') .css('user-select', 'none') .mousedown(preventDefault); .each(function() { this.onselectstart = preventDefault; }); }; 

рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Ctrl + A Ctrl + C рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЪрдпрди рдпрд╛ рдЕрдЪрдпрдирд┐рдд рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ: рдЪрдпрди рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛ рдмреБрд░рд╛рдИ рд╣реИред

6. (рдлрд╝рдВрдХреНрд╢рди () {}) (); рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


рдЗрд╕реЗ рддрддреНрдХрд╛рд▓-рдЗрдирд╡реЙрд▓реНрдб рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (IIFE) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред

рдпрд╣рд╛рдВ IIFE рдмрдирд╛рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ
 (function(){ /* code */ })(); //  IIFE (function(){ /* code */ }()); //   //     "" true && function(){ /* code */ }(); 0,function(){ /* code */ }(); //  ,      !function(){ /* code */ }(); // Facebook style ~function(){ /* code */ }(); -function(){ /* code */ }(); +function(){ /* code */ }(); //  new new function(){ /* code */ } new function(){ /* code */ }() //   ,    

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
1. рдпрджрд┐ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдЪрд▓реЛ)
 var APPLICATION_ID = function(){ var keys = { 'pew.ru': 15486, 'pew.pew.ru': 15487, 'pew.pew.pew.ru': 1548 }; return keys[window.location.host]; }(); 

2. рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрдХрд┐рдЯ рдмрдирд╛рдирд╛ - рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ
 var Module = (function(){ function privateMethod () { }; return { publicMethod: function () { return privateMethod(); } }; }()); 

рдЖрджрд░
рддреБрд░рдВрдд-рдЖрдордВрддреНрд░рд┐рдд рд╕рдорд╛рд░реЛрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (IIFE)
ECMA-262-3 рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред рдЕрдзреНрдпрд╛рдп 5. рдХрд╛рд░реНрдп
рдХрд╛рд░реНрдп рдФрд░ рдХрд╛рд░реНрдп рдХреНрд╖реЗрддреНрд░
рдирд╛рдорд┐рдд рдХрд╛рд░реНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдкреИрдЯрд░реНрди: рдЧрд╣рд░рд╛рдИ рдореЗрдВ
рдХреНрд▓реЛрдЬрд╝рд░ рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдпрд╛

7. рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ?

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HTML рдФрд░ CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП "рдП" рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдбреЛрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ "рдмреА" рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд╛рдЬреНрдп "рдП" рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ "рд░реАрд╕реЗрдЯ" рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ? рдЗрд╕реА рддрд░рд╣ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдХреИрд╕реЗ рд░реЛрд▓ рдХрд░реЗрдВ?
рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реЛрд▓рдмреИрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред DOM рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕реАрдзреЗ HTML рдХреЛрдб рд╕реЗ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрдиред

рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдбреЛрдо рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреНрд▓реЛрдиреЛрдб рд╡рд┐рдзрд┐ рд╣реИред рд╣рдо рдмрд╕ рдЕрдкрдиреА рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕рдореЗрдВ рдШрдЯрдирд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреА) рдФрд░ рдкреБрд░рд╛рдиреЗ рддрддреНрд╡ рдХреЛ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред
 //   $('input').click(function(){alert('')}); function resetEvents(element) { var newElement = element.cloneNode(true); element.parentNode.insertBefore(newElement, element); // fixed by @spmbt element.parentNode.removeChild(element); return newElement; } resetEvents($('input')[0]); //       

8. jax рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде ajax рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХреИрд╕реЗ рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рдХреЗ рдмрд┐рдирд╛ AJAX рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕ рдХрдорд╛рдВрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдЬрд╛рдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ('рдЕрд▓рд░реНрдЯ (" рдмреЛ !!! - ";'; 200);") рдЙрджреНрдзрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдЙрдирдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рд╣реИрдВ?
рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдХреЛрдб рдЦрд░рд╛рдм рд╣реИред рдпрд╣ eval рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕рд╣реА рдврдВрдЧ рд╕реЗ, рдЬрд▓реНрджреА рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдбреЗрдЯрд╛ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛ред

рдЖрдк RPC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред NowJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рдкрд╛рд░рджрд░реНрд╢реА RPC рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред NowJS рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╕рдордп рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
рд╕рд░реНрд╡рд░ рдкрд░: Node.JS рд╕рд░реНрд╡рд░
 var nowjs = require("now"); //   http  var everyone = nowjs.initialize(httpServer); everyone.now.getServerInfo = function(callback){ db.doQuery(callback); } 

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░
 now.getServerInfo(function(data){ //   }); 

рд╕рд░рд▓, рдкрд╛рд░рджрд░реНрд╢реА рдФрд░ рд╕реБрдВрджрд░!

рдЖрджрд░
NowJS рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛

9. рдХреНрдпреЛрдВ jQuery рдкрд╛рд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рд╣реИ?


jQuery рдПрдХ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред
1. undefined рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ undefined рдХреА рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред jQuery рдХреА рддреБрд▓рдирд╛ рдЕрдХреНрд╕рд░ undefined рдФрд░ рдЬрдм рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ undefined рдПрдХрд▓ рдЕрдХреНрд╖рд░ рдЪрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
2. рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП window рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИред jQuery рдПрдХ рдЕрдЪреНрдЫреА рдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, window.setInterval() рдФрд░ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ window рдПрдХ-рдЕрдХреНрд╖рд░ рдЪрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдХреЛрдб рдореЗрдВ c.setInterval()

10. рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реИ?


рд╕реНрдХреНрд░реЙрд▓ рд╡реНрд╣реАрд▓ ' DOMMouseScroll ' (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕) рдФрд░ ' mousewheel ' (рдмрд╛рдХреА) рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рд╡рд╛рд▓реА 2 рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ
рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдХреИрд╕реЗ рд▓рдЯрдХрд╛рдПрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ, рдЪрд▓реЛ рдЗрд╕рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рджреЗрдЦреЗрдВ
 function wheel(event){ var delta = 0; if (!event) event = window.event; //  IE. //   delta if (event.wheelDelta) { // IE, Opera, safari, chrome -    120 delta = event.wheelDelta/120; } else if (event.detail) { // Mozilla,    3 delta = -event.detail/3; } if (delta) { //    -   ( ). if (event.preventDefault) { event.preventDefault(); } event.returnValue = false; //  IE //    0,    ,   var dir = delta > 0 ? 'Up' : 'Down', } } 

JQuery рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдкреНрд▓рдЧрд┐рди jQuery рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдкреНрд▓рдЧрд┐рди рдбреЗрдореЛ рд╣реИ

рд╕рднреА рддрддреНрд╡ рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ: рд╕реНрдХреНрд░реЙрд▓ рдФрд░ рдореВрд╕рд╡реЗрд▓

11. рдХреНрдпрд╛ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЛрдХрд╕ рдШрдЯрдирд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?


рдлреЛрдХрд╕ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдШрдЯрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдм рдЪрдпрдирд┐рдд рд╣реИред

рдпрджрд┐ рдЖрдк рдорд╛рдирдХ рдкрдврд╝рддреЗ рд╣реИрдВ , рддреЛ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ focus рдФрд░ blur рдИрд╡реЗрдВрдЯ рдХреЗрд╡рд▓ рдлреЙрд░реНрдо рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИрдВ: LABEL, INPUT, SELECT, TEXTAREA рдФрд░ BUTTONред рдорд╛рдирдХ рд░реВрдк рд╕реЗ, рдХреЛрдИ рдЕрдиреНрдп рддрддреНрд╡ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп DOMFocusIn рдФрд░ DOMFocusOut ред IE, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕рдХреА рдЕрдкрдиреА рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ: focusout рдФрд░ focusout ред
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рддрддреНрд╡ рд╣реИрдВ, рдлреЙрд░реНрдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡реЗ focus рдФрд░ blur рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред

focus, blur, focusin, focusout, DOMFocusIn, DOMFocusOut :
www.quirksmode.org/dom/events/tests/blurfocus.html
рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рд╕рднреА 3 рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдлреЛрдХрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВред

рдЖрджрд░
рдзреБрдВрдзрд▓рд╛ рдФрд░ рдлреЛрдХрд╕

12. рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ (рдлреНрд░реАрдЬ) рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?


ECMAScript 3 рдореЗрдВ (рдорд╛рдирдХ рдЬреЛ рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ) рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреНрд░реАрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди ECMAScript 5 рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдИ рджрд┐рдП рдЬреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреБрд░рдВрдд рд╕реАрдорд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВред

Object.preventExtensions рд╕рдмрд╕реЗ рдХрдордЬреЛрд░ рд╕реАрдорд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
Object.seal - preventExtensions + рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛
Object.freeze - preventExtensions + seal + рдкреИрд░рд╛рдореАрдЯрд░ рд░реАрдб-рдУрдирд▓реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрди рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЖрджрд░
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирдпрд╛ 1.8.5
Object.preventExtensions / рд╕реАрд▓ / рдлреНрд░реАрдЬ рд╕рдорд╛рд░реЛрд╣ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ)
ECMAScript 5 рд╕рдВрдЧрддрддрд╛ рддрд╛рд▓рд┐рдХрд╛

13. рдХреНрдпрд╛ DOMElement рдХрд╛ рдХрд╕реНрдЯрдо рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреИрдЧреНрд╕ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдП?


рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдирд╣реАрдВред DOM рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред
1. рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рдХреЛрдИ рдирд┐рд░реНрдорд╛рддрд╛ рдирд╣реАрдВ рд╣реИрдВ - рддрддреНрд╡реЛрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИ - document.createElement('') рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ - String.prototype.anchor рдФрд░ рдЗрддрдиреЗ рдкрд░ред HTMLElement рдФрд░ HTMLDivElement рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИрдВред
2. рдЕрдЧрд░ рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА DOM рдЙрд╕реЗ рдкреЗрдбрд╝ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ "рдХреНрд▓рд┐рдпрд░" рдХрд░реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг
 //   - var HTMLZzzElement = function () { var self = document.createElement('zzz'); self.__proto__ = HTMLZzzElement.prototype; return self; }; //   HTMLUnknownElement function F(){} F.prototype = HTMLUnknownElement.prototype; HTMLZzzElement.prototype = new F(); HTMLZzzElement.prototype.constructor = HTMLZzzElement; HTMLZzzElement.prototype.pewpewpew = function () {}; //  var zzz = new HTMLZzzElement(); // ,  zzz.innerHTML = 'Yohoho!'; //  console.log(zzz instanceof HTMLZzzElement); // true console.log(zzz instanceof HTMLUnknownElement); // true console.log(zzz instanceof HTMLElement); // true console.log(typeof zzz.pewpewpew); // function //  -   //   DOM document.body.appendChild(zzz); //   zzz = document.querySelector('zzz') //   console.log(zzz instanceof HTMLZzzElement); // false console.log(zzz instanceof HTMLUnknownElement); // true console.log(zzz instanceof HTMLElement); // true console.log(typeof zzz.pewpewpew); // undefined 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо HTML рддрддреНрд╡ рдХреЗ "рд╡рд░реНрдЧ" рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 HTMLUnknownElement.prototype.pewpewpew = function () {}; console.log(typeof zzz.pewpewpew); // function 

"рд╡рд░реНрдЧреЛрдВ" рдХреА рд╡рд┐рд░рд╛рд╕рдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ
Node -> Element -> HTMLElement -> HTMLDivElement/HTMLMetaElement ...
рдЖрдк рдПрдХ рддрддреНрд╡ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рдЦрд░рд╛рдм рд╣реИ!

рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреАред IE8 рдФрд░ рдиреАрдЪреЗ рдореЗрдВ, html рддрддреНрд╡реЛрдВ рдХреЛ рд╣рд╡рд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдХрдо рд╕реНрддрд░ рдкрд░ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 >>document.createElement('div').constructor //undefined --   null... 

 >>document.createElement('div') instanceof Object //false -- , ?    toString   >>Object.prototype.toString.call(document.createElement('div')); //"[object Object]" 

14. рдХреНрд▓рд╛рдЗрдВрдЯ MVC-рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ?


рдХрдИ рд░реВрдкрд░реЗрдЦрд╛рдПрдБ рд╣реИрдВ:
JavaScriptMVC
Backbone.js
SproutCore
TrimJunction

рд╕рдм рдХреБрдЫ рджреЗрдЦреЛ рдФрд░ рдЬреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕реЗ рдЪреБрдиреЗрдВред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдХрд╛рдо рдХрд┐рдпрд╛

рдЖрджрд░
Backbone.js рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд┐рдЦрдирд╛
рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрдорд╡реАрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ mvc

15. рдмрд╛рдИрдкрд╛рд╕ рд░реЗрдлрд░ рдкреНрд░рддрд┐рдмрдВрдз

Blabla.ru рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ, рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рд░реЗрдлрд░ рдХреЛ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ (pewpew.com) рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЪрд┐рддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдПрдВ
рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗред рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░реЗрдлрд╝рд░ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

16. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ GOTO

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧреЛрдЯреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреИрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПред (рдЕрдЪреНрдЫреА рд╢реИрд▓реА рдФрд░ рдЧреЛрдЯреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ :) рд╣рдо рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдмреНрд▓реЙрдХ рдФрд░ рдЪрдХреНрд░реЛрдВ рдХреА рдмрд╣рд╛рд▓реА рдПрдХ рддреБрдЪреНрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ)
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЯреИрдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЧреЛрдЯреЛ рдирд╣реАрдВ рд╣реИ (рдХреЗрд╡рд▓ рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рд╣реИ)ред рд▓реЗрдмрд▓ рдЕрдиреНрдп рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд▓реЗрдмрд▓ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЕрдиреНрдп рдЪрд┐рд╣реНрдирд┐рдд рдмреНрд▓реЙрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдмрд▓ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 loop1: for (var a = 0; a < 10; a++) { if (a == 4) { break loop1; //  4  } alert('a = ' + a); loop2: for (var b = 0; b < 10; ++b) { if (b == 3) { continue loop2; //  3 } if (b == 6) { continue loop1; //   loop1 'finished'    } alert('b = ' + b); } alert('finished') } block1: { alert('hello'); //  'hello' break block1; alert('world'); //     } goto block1; // Parse error - goto  

17. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдоред рдордиреБрд╖реНрдп рдФрд░ рд╕реНрддреНрд░реА рдХреЛ рдорд╛рдирд╡ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕рд╣реА рд╣реИ


рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИред рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ " рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореВрд▓ рдмрд╛рддреЗрдВ рдФрд░ рдЧрд▓рддрдлрд╣рдореА " рд▓реЗрдЦ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ

18. рдХреНрдпрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдореЗрдВ рдЦреБрджрд╛рдИ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?


рдкрд░рд┐рдпреЛрдЬрдирд╛, рдХрдВрдкрдиреА рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА рдХрдВрдкрдиреА рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдЧреЗрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдПрдХ рдмрдбрд╝реА рдХрдВрдкрдиреА рдПрдХ рдЕрд▓рдЧ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЦрд░реНрдЪ рдЙрдард╛ рд╕рдХрддреА рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рдЫреЛрдЯреА рдХрдВрдкрдиреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАред рдХреНрдпрд╛ рдЖрдк рдПрдХ рдкреНрд░рдореБрдЦ рдЕрдиреБрднрд╡ рдХреЗ рдмрд┐рдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ?
рдпрджрд┐ рдЖрдк рдЕрднреА рд╡реЗрдм рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдБ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред

19. .js рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рдкреНрд░рдерд╛рдПрдВ рд╣реИрдВ?


рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реАрдХреЗ рд╣реИрдВ: XHR, SSE, WebSockets, JSONP:
HTTP- рд╕рд░реНрд╡рд░ рдЗрд╡реЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTTP рд╕рд░реНрд╡рд░ рдкреБрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдирдИ XMLHttpRequest2 рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдирд╛
рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЧрдпрд╛ рдХреМрди рд╕рд╛ рдкрд░рд┐рд╡рд╣рди рдФрд░ рдкреНрд░рд╛рд░реВрдк рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдЪреИрдЯ рд╣реИ, рддреЛ SSE рдпрд╛ WebSockets рдмреЗрд╣рддрд░ рд╣реИ (рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдг рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред рдФрд░ рдЕрдЧрд░ рдЗрд╕ рдЪреИрдЯ рдХреЛ IE6 рдореЗрдВ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рдЖрдИрдлреНрд░реЗрдо рдпрд╛ рдлреНрд▓реИрд╢ рдХреЗ рд╕рд╛рде рдЬрд╛рджреВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

20. рдХреНрдпрд╛ рд╕рд╛рдзрд╛рд░рдг рдбреЛрд▓рдореЗрди (div) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DOMInputElement рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪреБрдирдирд╛ (рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛) рд╕рдВрднрд╡ рд╣реИ?


рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред рдореИрдВрдиреЗ 13 рд╡реЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрддрд╛рдпрд╛ред рдЖрдк рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдЧрд╛, рдЬреЛ DOMDivElement рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдореБрд▓реЗрдЯрд░ jsfiddle.net/azproduction/Kz4d9 рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ - рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рдЗрдирдкреБрдЯ рдирд┐рдХрд▓рд╛ (рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдлреЛрдХрд╕ рдХреИрд╕реЗ рдЦреЛрдирд╛ рд╣реИ, рдЖрджрд┐)ред
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ ( рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рдиреЛрдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдХреЗрд╡рд▓ 1 рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж , рдЬреЛ рдХреЗрд╡рд▓ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рд╣реА рдЗрдирдкреБрдЯ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдмреЗрд╣рддрд░ jsfiddle.net/azitduction/ZTqRe

21. рдирд┐рдЬреА рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛

рдпрджрд┐ рдирд┐рдЬреА рдЪрд░ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ, рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рд╢реЙрдХ :
рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ред рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдмреЗрд╣рддрд░ред
 // our constructor function Person(name, age){ this.name = name; this.age = age; }; // prototype assignment Person.prototype = new function(){ // we have a scope for private stuff // created once and not for every instance function toString(){ return this.name + " is " + this.age; }; // create the prototype and return them this.constructor = Person; this._protectedMethod = function (){ // act here }; this.publicMethod = function() { this._protectedMethod(); }; // "magic" toString method this.toString = function(){ // call private toString method return toString.call(this); } }; 

рдореЙрдбреНрдпреВрд▓рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг:
 var Module = (function (window) { function privateFunction() { console.log('pass'); }; var privateClass = function () {}; var publicClass = function () {}; publicClass.prototype.publicMethod = function () { privateFunction(); // ... }; return { //  publicClass: publicClass }; }(this)); //  (new Module.publicClass()).publicMethod(); 

22. рдПрдХ рд╕рд╛рде рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?


рд╕рдм рдХреБрдЫ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рд░ рдирд╣реАрдВ:
1. рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ: рдХрдИ рдлрд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рд╣реЛрддреА рд╣реИ
2. HTML5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╣рдордиреЗ рдХрд┐рддрдиреА рдмрд╛рд░ рдмреБрд░реЗ рд╢рдмреНрдж рдХрд╣реЗ
3. рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░
4. ajax php рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
5. рд╡рд░реАрдпрддрд╛рдУрдВ рдФрд░ рдирд░реНрддрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде HTML5 рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

23. рдлрд╛рдЗрд▓ рдФрд░ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред File.type рд╕рдВрдкрддреНрддрд┐ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдорджрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ dir - рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП), рдХреНрдпрд╛ рдЖрдХрд╛рд░ рдЧреБрдг рднреА (ff рдФрд░ рд╕рдлрд╛рд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ)?
File.type , рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдлрд╝рд╛рдЗрд▓ / рдлрд╝реЛрд▓реНрдбрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо "pewpew" рдирд╛рдо рд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд▓рд┐рдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдорд╛рдЗрдо "" рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ "pewpew.html" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдЗрдо "text/html" ред рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╣рдореЗрд╢рд╛ 0 рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЖрдХрд╛рд░ 0 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред 100% рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред
рдорд╛рдирдХ www.w3.org/TR/FileAPI рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ SECURITY_ERR рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд▓рдд рдлрд╝рд╛рдЗрд▓реЛрдВ (рд╕рдВрд░рдХреНрд╖рд┐рдд, рдкрдардиреАрдп, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред рдЗрд╕ рдХрд╛ред

рдореИрдВрдиреЗ рдЬреЛ рдЖрдзрд╛рд░ рд▓рд┐рдпрд╛ рд╡рд╣ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ
рд╣рдо рд╕рдВрд╕рд╛рдзрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FileReader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ reader.readAsDataURL рд╡рд┐рдзрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрддреА рд╣реИред рдХреНрд░реЛрдо рдореЗрдВ, рдпрд╣ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди reader onerror рдШрдЯрдирд╛ рдХреЛ onerror ред рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдпрд╛ рдирд╣реАрдВред
 function isReadableFile(file, callback) { var reader = new FileReader(); reader.onload = function () { callback && callback(true); callback = null; } reader.onerror = function () { callback && callback(false); callback = null; } try { reader.readAsDataURL(file); } catch (e) { callback && callback(false); callback = null; } } 

рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЙрд▓рдмреИрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд┐рдпрд╛ рдЬрд╛рдП (рднрд╡рд┐рд╖реНрдп рдореЗрдВ, FileReader рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ)ред
Jsfiddle.net/azproduction/3sV23/8 рдЙрджрд╛рд╣рд░рдг

рд╢рд╛рдпрдж рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реАрдорд┐рдд рдерд╛ред рдпрджрд┐ 0 рд╣реИ, рддреЛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдХрд╛рд░ рдореЗрдВ 0 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реИ)ред

24. рдХреНрдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдХреНрд░рдорд╢рдГ рдкрд╛рдпрдерди / рдЬрд╛рд╡рд╛ рд╕реЗ рд╢рдмреНрдж) рдореЗрдВ рдШреЛрд╖рдгрд╛рдУрдВ / рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдирд╛рд▓реЙрдЧ рд╣реИрдВ?


рдХреЛрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдирд╛рд▓реЙрдЧ рдирд╣реАрдВ рд╣реИрдВред

PS рдпрджрд┐ рдореИрдВ рдХрд┐рд╕реА рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ - рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреВрдЫреЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╣рд▓реЗ рдпрд╛ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдХреЛрдИ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИ - рдкреВрдЫреЗрдВ - рд╡реЗ рддреАрд╕рд░реЗ рдореЗрдВ рд╣реЛрдВрдЧреЗ;)

Source: https://habr.com/ru/post/In124327/


All Articles