рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЭреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдЪреБрдиреМрддреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореИрдВ Mail.Ru рдореЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реА рд╕реАрдзреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЕрдкрдиреЗ рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рдореЗрд▓ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╣рдо рдпрд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдлреНрд▓реИрд╢-рд▓реЛрдбрд░ рдерд╛, рдЬреЛ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдирдХреЗ рдкрд╛рд╕ рдХрдИ рдХрдорд┐рдпрд╛рдБ рдереАрдВред рд╕рднреА рд▓реЗрдЖрдЙрдЯ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдЗрд╕рдореЗрдВ рддрд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдорд╛рдзрд╛рди рдмреЛрдЭрд┐рд▓ рдерд╛, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдлреНрд▓реИрд╢ рдбреЗрд╡рд▓рдкрд░ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдирдП рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдЬреЛ рд▓реЛрдЧ рдлреНрд▓реИрд╢-рд▓реЛрдбрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рд╡реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ:
- рдХреБрдХреАрдЬрд╝ IE рд╕реЗ рд▓реА рдЬрд╛рдПрдВрдЧреА;
- рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рдПрдХ рд╣реА рдХрд╣рд╛рдиреА;
- рддреНрд░реБрдЯрд┐ # 2038, # 2048, ... - рдЕрд╕реНрдерд╛рдпреА рддреНрд░реБрдЯрд┐, рдиреЗрдЯрд╡рд░реНрдХ + рдмреНрд░рд╛рдЙрдЬрд╝рд░ + рдлреНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ;
- AdBlock, рдЖрджрд┐ред - рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕рдм рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдпрд╣ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ - рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рд╣реИ:
- рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдЪрдпрди;
- рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдирд╛рдо, рдЖрдХрд╛рд░ рдФрд░ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░);
- рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЫрд╡рд┐ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░реЗрдВ;
- рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рдХреНрд░реЙрдкрд┐рдВрдЧ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдШреБрдорд╛рд╡;
- рд╕рд░реНрд╡рд░ + CorS рдХреЛ рд╣реБрдЖ рд╕рдм рдХреБрдЫ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛;
- рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛;
- рддрд╛рдирд╛рдирд╛ред
рдкрд┐рдЫрд▓реЗ 4 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ,
рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рд╣рд┐рдд рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рддреЗрдЬреА рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ? рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛
Mail.Ru рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рд╡реЗ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд╕реВрдЪреА рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ, рднрд▓реЗ рд╣реА 100% рди рд╣реЛрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ 63% рд╕реЗ рдЕрдзрд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдиреЗ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛:
- Chrome 10+ (~ 26%)
- рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3.6+ (~ 19%)
- рдУрдкреЗрд░рд╛ 11.10+ (~ 17%)
- рд╕рдлрд╛рд░реА 5.4+ (~ 1.4%)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛, рдЬрд┐рдирдХреА рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рджрд┐рди-рдкреНрд░рддрд┐рджрд┐рди рдмрдврд╝ рд░рд╣реА рд╣реИред
iOS 6 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
Internet Explorer рд╕рдВрд╕реНрдХрд░рдг 10 рд╕реЗ рд╕рдорд░реНрдерди рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди 63% рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ 100% рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдлреНрд▓реИрд╢ рдХреЛ рдордирд╛ рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреАред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдп рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдХрд╕рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рддрдХрдиреАрдХреЛрдВ (рдлрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдФрд░ рдлреНрд▓реИрд╢) рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдВрддрд┐рдо рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрд░рд╡рд╛рд╣ рди рд╣реЛ рдХрд┐ рдлрд╛рдЗрд▓реЗрдВ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди, рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдПрдХреАрдХреГрдд рдПрдкреАрдЖрдИ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реБрдЖ, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ Mail.Ru рдореЗрд▓ рдХреЗ рднреАрддрд░ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд╣реАрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЗрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рд╣реБрдИред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдпрд╣ рдХреИрд╕реЗ HTML5 рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
<input id="file" type="file" multiple /> <script> var input = document.getElementById("file"); input.addEventListener("change", function (){ var files = input.files; }, false); </script>
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВ рдЬрдм рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлреНрд▓реИрд╢ рд╕рдорд░реНрдерд┐рдд рд╣реИ? рдлреНрд▓реИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реАрдзреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдХреЛ рдХреЗрд╡рд▓ рд▓реЗ рдФрд░ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд╝реНрд▓реИрд╢ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдордп рдПрдХ рд╕рдВрд╡рд╛рдж рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдРрд╕реА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдлрд╝реНрд▓реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЗрдирдкреБрдЯ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдорд╛рдЙрд╕рдУрд╡рд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк "рдореВрд▓" рдореЗрдВ рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = "рдлрд╝рд╛рдЗрд▓"] рдкрд░ рд╣реЛрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреНрд▓реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИред
рдЬрдм рдЖрдк рдПрдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдЦреБрд▓рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЪреБрдирддрд╛ рд╣реИ рдФрд░ рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рдХреЛ рдлреНрд▓реИрд╢ рд╕реЗ рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдЗрдВрдЯреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЗрдирдкреБрдЯ рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ рдФрд░ "рдкрд░рд┐рд╡рд░реНрддрди" рдШрдЯрдирд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред
рдлреНрд▓реИрд╢ -> рдЬреЗ.рдПрд╕. [[Flash]] --> jsFunc([{ id: "346515436346",
рдЬреЗрдПрд╕ рдФрд░ рдлреНрд▓реИрд╢ рдХреЗ рдмреАрдЪ рд╕рднреА рдЖрдЧреЗ рдХреА рдмрд╛рддрдЪреАрдд рдлреНрд▓реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧреАред рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рд╣реИрдВ: рдлрд╝рд╛рдЗрд▓ рдЖрдИрдбреА рдФрд░ рдХреЙрд▓рдмреИрдХред рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдлреНрд▓реИрд╢ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
flash.cmd("imageTransform", { id: "346515436346",
рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдорд┐рд▓рд╛ рдЬреЗрдПрд╕ред рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рд╣реИред рдЕрдм рд╣рдо рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╛рдЗрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИ рдЕрдЧрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ HTML5 / рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ; рдлреНрд▓реИрд╢ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реВрдЪреА рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗ рд▓реА рдЧрдИ рд╣реИред
<span class="js-fileapi-wrapper" style="position: relative"> <input id="file" type="file" multiple /> </span> <script> var input = document.getElementById("file"); FileAPI.event.on(input, "change", function (){ var files = FileAPI.getFiles(input); }); </script>
рдпрд╛ рддреЛ <span class="js-fileapi-wrapper" style="position: relative"> <input id="file" type="file" multiple /> </span> <script> var input = document.getElementById("file"); FileAPI.event.on(input, "change", function (evt){ var files = FileAPI.getFiles(evt); }); </script>
рдЫрд╛рдирдиреЗ
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЗрдВ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░, рдкреНрд░рдХрд╛рд░ рдФрд░ рдЪреМрдбрд╝рд╛рдИ / рдЫрд╡рд┐ рдХреА рдКрдВрдЪрд╛рдИ рд╣реИред рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдпреЛрдЬрдирд╛: рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдИ, "рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ"ред рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред
рдХрдард┐рдирд╛рдИ рдХреНрдпрд╛ рд╣реИ? рдкреВрд░реЗ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдиреНрдпреВрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдирд╛рдо, рдЖрдХрд╛рд░ рдФрд░ рдкреНрд░рдХрд╛рд░ред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣
FileReader рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╣реИ:
FileAPI.filterFiles(files, function (file, info){ if( /^image/.test(file.type) ){ return info.width > 320 && info.height > 240; } else if( file.size ){ return file.size < 10 * FileAPI.MB; } else {
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдЫрд╡рд┐ рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдЕрднреА рднреА рд╣реИ:
FileAPI.addInfoReader(/^audio/, function (file, callback){
рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде - рдФрд░ рдпрд╣ рдХрд┐ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдФрд░ рдлреНрд▓реИрд╢ рджреНрд╡рд╛рд░рд╛ рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдлрд╝реНрд▓реИрд╢
рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рд╕рдордЭрдирд╛ рдерд╛ рдХрд┐ рдлреНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХреЛ рдХреНрдпрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдпрд╣ рдбреЗрдЯрд╛ рдпреВрдЖрд░рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреНрд▓реИрд╢ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреЗрд╕ 64 рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдЬреЗрдПрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ, тАЬdata: image / png; base64,тАЭ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ тАЬsrcтАЭ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВред
рд╣реИрдкреНрдкреА рдПрдВрдб? рдХрд╛рд╢, IE6-7 рдбреЗрдЯрд╛ URIs рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛, рдФрд░ IE8 + рдЬреЛ рдбреЗрдЯрд╛ URI рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, 32 KB рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, JS рдПрдХ рджреВрд╕рд░реА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ Base64 рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЫрд╡рд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдЪрдЯреАрдПрдордПрд▓ 5
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдореВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдореВрд▓ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ FileReader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ DataURL рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ -
URL.createObjectURL рд╡рд░реНрддрдорд╛рди рдЯреИрдм рд╕реЗ рдЬреБрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдХреБрдЫ рд╕рд╛рдереА URL.revokeObjectURL рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ FileAPI.Image рдХреНрд▓рд╛рд╕ рдорд┐рд▓рддреА рд╣реИ:
- рдлрд╕рд▓ (x, y, рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ) - рдлрд╕рд▓;
- рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ (рдЪреМрдбрд╝рд╛рдИ [, рдКрдВрдЪрд╛рдИ]) - рд╕реНрдХреЗрд▓рд┐рдВрдЧ;
- рд░реЛрдЯреЗрдЯ (рдиреАрдЪрд╛) - рд░реЛрдЯреЗрд╢рди;
- рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди (рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ) - рдлрд╕рд▓ рдФрд░ рдкреИрдорд╛рдиреЗ;
- get (рдХреЙрд▓рдмреИрдХ) - рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпреЗ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рднрд░рддреА рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдпрд╣ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреИрдирд╡рд╕ рдпрд╛ рдлрд╝реНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд┐рд╡рд░рдг рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ FileAPI.Image(imageFle) .crop(300, 300) .resize(100, 100) .get(function (err, img){ if( !err ){ images.appendChild(img); } }) ;
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ
рджрд░реНрдкрдг рдФрд░ рд╕рд┐рд░реНрдл "рд╕рд╛рдмреБрди рдХреЗ рдмрдХреНрд╕реЗ" рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рдЖрдП рд╣реИрдВ, рдЬреЛ рдХрд┐ 10Mpx рд╕реЗ 1.2K рд░реВрдмрд▓ рдХреА рдХреАрдордд рдкрд░ рдЬрд╛рд░реА рд╣реИред рдФрд░ рдЬрдм рд╣рдордиреЗ рдРрд╕реА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдХрдВрдкреНрд░реЗрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рд╛:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╕рд░рд╛рд╕рд░ рд╡рд┐рдХреГрддрд┐ рд╣реИред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ рдФрд░ рдлрд┐рд░ рд╕реЗ, рдЬрдм рддрдХ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддрдм рддрдХ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлрд╝реА рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ, рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ:

рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рддреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреИрд╕реЗ рдХрд┐ рдмрд╛рдЗрдмрд┐рдХ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдФрд░ рд▓реИрдВрдХреНрдЬрд╝реЛрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердоред рд╡реЗ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ: 1.5 рдмрдирд╛рдо 200-300msред рд╕рд╛рде рд╣реА, рдпрд╣ рд╡рд┐рдзрд┐ рдХреИрдирд╡рд╕ рдФрд░ рдлреНрд▓реИрд╢ рдореЗрдВ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрддреА рд╣реИред
рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
рдореИрдВ рдЙрди рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдмрдирд╛рдКрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдм рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
iframe
рд╣рд╛рдБ, рдФрд░ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рднреА рд╡рд╣ рд╕реЗрд╡рд╛ рдореЗрдВ рд╣реИ:
<form target="__UNIQ__" action="/upload" method="post" enctype="multipart/form-data"> <iframe name="__UNIQ__"></iframe> <input name="files" type="file" /> <input name="foo" value="bar" type="hidden" /> </form>
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкрд░рд┐рд╡рд╣рди рдлреЙрд░реНрдо рдПрдХ iframe рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдкрддреНрд░ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ iframe рдХрд╛ рдорд┐рд▓рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдлрд┐рд░ рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = "рдлрд╝рд╛рдЗрд▓"] рдХреЛ рдЙрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдХреНрд▓реЛрди рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ "рдЦрд╛рд▓реА" рд╣реЛрдЧрд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдлреЙрд░реНрдо.рд╕реБрдорд┐рдЯ () рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдлреЙрд░реНрдо рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ iframe рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ JSONP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИред
рдлреНрд▓реИрд╢ / рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ
рдлреНрд▓реИрд╢ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ, рдЬреЛ рдлреНрд▓реИрд╢ рдХрд╛ рд╣рддреНрдпрд╛рд░рд╛ рдмрдирдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдПрдХ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реБрдЖред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдЬреЗрдПрд╕ рдлреНрд▓реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрдИрдбреА рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлреНрд▓реИрд╢, рдмрджрд▓реЗ рдореЗрдВ, рдЬреЗрдПрд╕ рдореЗрдВ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИред
XMLHttpRequest + FormData
рдЕрдм рдЖрдк рди рдХреЗрд╡рд▓ рдкрд╛рда рдбреЗрдЯрд╛, рдмрд▓реНрдХрд┐ рдмрд╛рдЗрдирд░реА рднреА рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреИрдирд╡рд╛рд╕? рдЗрд╕рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╣реА рдФрд░ рд╕рд░рд▓ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреИрдирд╡рд╕ рдХреЛ рдмреНрд▓реЙрдм рдореЗрдВ рдмрджрд▓реЗрдВ:
canvasToBlob(canvas, function (blob){ var form = new FormData form.append("foo", "bar"); form.append("attach", blob, "filename.png");
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд╛рд▓ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдпрджрд┐ рдХреИрдирд╡рд╕ рдореЗрдВ рдХреИрдирд╡рд╕ .toBlob рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рд╛рд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдПрдХ рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдирд╛ рд╣реИред рдХреИрдирд╡рд╕ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
var dataURL = canvas.toDataURL("image/png");
рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ xhr.sendAsBinary рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рдзрд┐ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ:
var xhr = тАЛFileAPI.upload({ url: '/upload', data: { foo: 'bar' }, headers: { 'Session-Id': '...' }, files: { images: imageFiles, others: otherFiles }, imageTransform: { maxWidth: 1024, maxHeight: 768 }, upload: function (xhr){}, progress: function (event, file){}, complete: function (err, xhr, file){}, fileupload: function (file, xhr){}, fileprogress: function (event, file){}, filecomplete: function (err, xhr, file){} });тАЛ
рдЗрд╕рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрдореЗрдЬрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдлрд╝реНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ HTML5 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ: рдпрд╣ рднреА imageTransform рдХрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
{ huge: { maxWidth: 800, maxHeight: 600, rotate: 90 }, medium: { width: 320, height: 240, preview: true }, small: { width: 100, height: 120, preview: true } }
рдпрд╛рдиреА рдореВрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рдЗрд╕рдХреА рддреАрди рдкреНрд░рддрд┐рдпрд╛рдВ рднреА рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВ? рдореЗрд░реА рд░рд╛рдп рдпрд╣ рд╣реИ: рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реЛрдб рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рддреЛ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХрд╛ рдиреНрдпреВрдирддрдо рд╕рддреНрдпрд╛рдкрди рд╕рд░реНрд╡рд░ рдкрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдПрдХ xhr- рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╣ рдХреБрдЫ XMLHttpRequest рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:
- рд╕реНрдЯреЗрдЯрд╕ - HTTP рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб
- statusText - HTTP рд╕реНрдЯреЗрдЯрд╕ рдЯреЗрдХреНрд╕реНрдЯ
- responseText - рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
- getResponseHeader (рдирд╛рдо) - рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- getAllResponseHeaders () - рд╕рднреА рд╣реЗрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- abort () - рдбрд╛рдЙрдирд▓реЛрдб рд░рджреНрдж рдХрд░реЗрдВ
рдпрджреНрдпрдкрд┐ HTML5 рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдлрд╝реНрд▓реИрд╢ рдЗрдВрдЬрди рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдирд╛ рдорди рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рддреЛ, рдЕрдкрд▓реЛрдб рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ xhr рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реАрдПрдХреНрд╕рдПрдЪрдЖрд░ рд╣реИред рдЗрд╕рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЧреБрдг рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рднрд░реА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд░рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдПрдЧреАред
рдЙрдкрд╕рдВрд╣рд╛рд░
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ drag'n'drop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
<div id="el" class="dropzone"></div> <script> if( FileAPI.support.dnd ){ </script>
рдкреБрд╕реНрддрдХрд╛рд▓рдп github, Bugreports рдкрд░ рд╣реИ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИредрдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
-
https://github.com/mailru/FileAPI (
рдбреЗрдореЛ )
-
Mail.ru github (рдЯрд╛рд░реЗрдВрдЯреВрд▓, рдлреЗрд╕реНрдЯ рдФрд░ рдЕрдзрд┐рдХ)
-
рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = "рдлрд╝рд╛рдЗрд▓" рдХрдИ]-
рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди-
рдлрд╛рдЗрд▓рд░-
URL.createObjectURL ,
URL.revokeObjectURL-
XMLHttpRequest-
рдлреЙрд░реНрдордЯрд╛рдЯрд╛