The Problem with Native JavaScript APIs

┬╖ "O'Reilly Media, Inc."
рей.рен
резрелрео рд╕рдореАрдХреНрд╖рд╛рд╣рд░реВ
рдЗ-рдкреБрд╕реНрддрдХ
16
рдкреГрд╖реНрдард╣рд░реВ
рдпреЛрдЧреНрдп

рдпреЛ рдЗ-рдкреБрд╕реНрддрдХрдХрд╛ рдмрд╛рд░реЗрдорд╛

Many features inspired by popular JavaScript libraries are now available as native JavaScript APIs in todayтАЩs powerful browsers. While that may seem convenient given all of the JavaScript you need to write, relying on these APIs will only make code maintenance more difficult in the long run.

In this report, Nicholas ZakasтАФconsultant and former front-end tech leader at Yahoo!тАФprovides a case study to show how different browsers can develop native APIs for the same specification and still end up with different interpretations. YouтАЩll discover how these APIs can tie your code to specific browsers, forcing you to upgrade application logic whenever new browsers and new browser versions are released.

рдореВрд▓реНрдпрд╛рдЩреНрдХрди рд░ рд╕рдореАрдХреНрд╖рд╛рд╣рд░реВ

рей.рен
резрелрео рд╕рдореАрдХреНрд╖рд╛рд╣рд░реВ

рд▓реЗрдЦрдХрдХреЛ рдмрд╛рд░реЗрдорд╛

Nicholas C. Zakas is a front-end consultant, author, and speaker. He worked at Yahoo! for almost five years, where he was front-end tech lead for the Yahoo! homepage and a contributor to the YUI library. He is the author of Professional JavaScript for Web Developers (Wrox, 2012), Professional Ajax (Wrox, 2007), and High Performance JavaScript(OтАЩReilly, 2010). Nicholas is a strong advocate for development best practices including progressive enhancement, accessibility, performance, scalability, and maintainability. He blogs regularly at http://www.nczonline.net/ and can be found on Twitter via @slicknet.

рдпреЛ рдЗ-рдкреБрд╕реНрддрдХрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╣рд╛рдореАрд▓рд╛рдИ рдЖрдлреНрдиреЛ рдзрд╛рд░рдгрд╛ рдмрддрд╛рдЙрдиреБрд╣реЛрд╕реНред

рдЬрд╛рдирдХрд╛рд░реА рдкрдвреНрджреИ

рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рддрдерд╛ рдЯреНрдпрд╛рдмрд▓реЗрдЯрд╣рд░реВ
Android рд░ iPad/iPhone рдХрд╛ рд▓рд╛рдЧрд┐┬аGoogle Play рдХрд┐рддрд╛рдм рдПрдк рдХреЛ рдЗрдиреНрд╕реНрдЯрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рдЦрд╛рддрд╛рд╕реЕрдВрдЧ рд╕реНрд╡рддрдГ рд╕рд┐рдВрдХ рд╣реБрдиреНрдЫ рд░ рддрдкрд╛рдИрдВ рдЕрдирд▓рд╛рдЗрди рд╡рд╛ рдЕрдлрд▓рд╛рдЗрди рдЬрд╣рд╛рдБ рднрдП рдкрдирд┐┬ардЕрдзреНрдпрдпрди рдЧрд░реНрди рджрд┐рдиреНрдЫред
рд▓реНрдпрд╛рдкрдЯрдк рддрдерд╛ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВ
рддрдкрд╛рдИрдВ Google Play рдорд╛ рдЦрд░рд┐рдж рдЧрд░рд┐рдПрдХреЛ рдЕрдбрд┐рдпреЛрдмреБрдХ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдХреЛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
eReaders рд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ
Kobo eReaders рдЬрд╕реНрддрд╛ e-ink рдбрд┐рднрд╛рдЗрд╕рд╣рд░реВрдорд╛ рдлрд╛рдЗрд▓ рдкрдвреНрди рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реЗрд░ рдЙрдХреНрдд рдлрд╛рдЗрд▓ рдЖрдлреНрдиреЛ рдбрд┐рднрд╛рдЗрд╕рдорд╛ рдЯреНрд░рд╛рдиреНрд╕реНрдлрд░ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рд╣реБрдиреНрдЫред рддреА рдлрд╛рдЗрд▓рд╣рд░реВ рдкрдвреНрди рдорд┐рд▓реНрдиреЗ рдЗрдмреБрдХ рд░рд┐рдбрд░рд╣рд░реВрдорд╛ рддреА рдлрд╛рдЗрд▓рд╣рд░реВ рдЯреНрд░рд╛рдиреНрд╕реНрдлрд░ рдЧрд░реНрдиреЗрд╕рдореНрдмрдиреНрдзреА рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдорджреНрджрдд рдХреЗрдиреНрджреНрд░ рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред