рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди

рдЫрд╡рд┐

рд╕рдорд╕реНрдпрд╛

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рджреЗрд░ рд░рд╛рдд, рдмрд╕ рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдлреЛрди рдирд┐рдХрд╛рд▓рд╛ рдФрд░ "рд╣рдмреНрд░ ..." рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реБрдП рдЙрд╕рдиреЗ рдХрд╛рдЯ рд▓рд┐рдпрд╛ред рдореИрдВрдиреЗ рдЬреЛрд░ рд╕реЗ рд╕реЛрдЪрд╛: "рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдереЗ?", рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдкрдЫрддрд╛рд╡рд╛ рд╣реБрдЖ рдХрд┐ рдлреЛрди рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЪреАрдЦрд╝рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╡реЗ рд╕рддреНрддрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ ...

рддрдм рдореИрдВрдиреЗ рдФрд░ рдореЗрд░реЗ рджреЛрд╕реНрдд рдиреЗ рдПрдХ рдЖрджрдореА рдХреА рддрд░рд╣ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ Android рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛, рдФрд░ рдореИрдВрдиреЗ рдХреНрд░реЛрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдХрд╛рд░реНрдп

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдп рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЪреБрдирд╛рд╡ рджрд╕-рдЕрдВрдЧреБрд▓ рдХреА рдЫрдкрд╛рдИ рдХреА рдЧрддрд┐ рд╕реЗ рднреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ред

рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдПред

рдирд┐рд░реНрдгрдп

рдХреНрд░реЛрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЬрд┐рддрдирд╛ рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЕрдХреЗрд▓реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реА рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯред рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ HTML рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ , рдпрд╣ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдерд╛ред рдФрд░ рдЪреВрдВрдХрд┐ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рднреА рддрд░реНрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдИ рд░реЗрдХ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдХрд╛рд╕реНрдХреЗрдЯ рдХреЗ рдпреЗ рджреЛрдиреЛрдВ рддреБрд░рдВрдд рдЪрд▓рди рдореЗрдВ рдЖ рдЧрдПред рд╡рд╣ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдпрд╛, рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред рдкреЗрд▓реЛрдб рдХреА рдмрд╣реБрдд рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдмрдЧреАрдЪреЗ рдХреЛ рдпрд╣рд╛рдВ рд╕реНрдкреЗрдЧреЗрдЯреА рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред MVC рдкреИрдЯрд░реНрди рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╣ рдиреЙрдХрдЖрдЙрдЯ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдерд╛, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдорд╡реАрд╡реАрдПрдо рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреГрд╖реНрда рд╕реЗ рдкреГрд╖реНрда рдкрд░ (рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ) рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдиреЙрдХрдЖрдЙрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЪреБрдирд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреЙрд░рд╡рд░реНрдб - рдХреЛрдбрд┐рдВрдЧред рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдШрдВрдЯрд╛ рдХрдо рд╣реИред

рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди

рдореИрдВрдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ ASP.NET рдЦрд╛рд▓реА рдЖрд╡реЗрджрди рдХреЛ рдЪреБрдирд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣рд╛рдБ рдкрд┐рддрд╛ рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде HTML рдЕрдиреБрдкреНрд░рдпреЛрдЧ - рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди-рдСрди-рд╕реЗрд╡ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкрд╕реАрдирд╛ рдмрд╣рд╛рдирд╛ рдкрдбрд╝рд╛

рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдиреНрдпреВрдирддрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЙрдирдХреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрдВрдк рдХрд┐рдпрд╛ред рдореЗрд░реЗ рджреЛрд╕реНрдд рдмреЛрд░рд┐рд╕ рдпреИрдВрдХреЛрд╡ рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдПрдХ рднрд╡реНрдп рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдорджрдж рдХреА , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдХреЛ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

MVC рдХреЗ рдЖрдЧреЗ рдХреЗ рдШрдЯрдХ:

рдПрдо: рдореИрдВрдиреЗ рджреЛ рдореЙрдбрд▓ рдмрдирд╛рдП, рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП (рдкреЙрдкрдЕрдк рд╡реНрдпреВрдореЙрдбрд▓ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕рд╕реНрдЯреИрдЯрд╕реНрдпреВрд╡реНрдпреВрдореЙрдбрд▓)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ ViewModel рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдореЙрдбрд▓
V: рдЕрдЪреНрдЫреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдкрд░ рдкреНрд░рд╕реНрддреБрддрд┐, рдХреЗрд╡рд▓ popup.html рдмрдирд╛рдпрд╛
C: рдареАрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ - рдирд┐рдпрдВрддреНрд░рдХ

рдбрд┐рд╡рд╛рдЗрд╕рд╕реНрдЯреИрдЯрд╕ рдиреЗ рднреА рдХрд┐рдпрд╛ - рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВред

рдПрдХ рд╕реБрдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╣реИред рдЬреЗрд╕рди , рдЗрд╕ рдПрдХ рдХреНрд░реЛрдо рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмрд╕ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реИ, рдФрд░ рдпрд╣ рддрд╕реНрд╡реАрд░ рд╣реИ:

рдЫрд╡рд┐

рдЕрдм рдпрд╣ рд╕рдм рдЕрд░реНрде рдХреЗ рд╕рд╛рде, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рднрд░рд╛ рдЬрд╛рдирд╛ рдерд╛ред Chrome рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдкрд░рд┐рд╢реНрд░рдордкреВрд░реНрд╡рдХ рджреМрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рддреБрд░рдВрдд рдкреГрд╖реНрдарднреВрдорд┐ рдкреГрд╖реНрда рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдЗрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИред Json:

"background": { "scripts": ["lib/jquery-1.7.2.min.js", "src/DeviceStatus.js", "src/Controller.js"] } 


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

рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдореНрдореАрдж рдереА, рд╕реНрдкрд╛рд░реНрдЯрди рдирд┐рдХрд▓рд╛ред рдпрд╣ рдХреЗрд╡рд▓ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрд╛рд░реНрдЬ рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕реЗрдЯ рдХрд░реЗрдВред

рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
рдЫрд╡рд┐

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Chrome рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдХреНрдпрд╛ рдФрд░ рдХрдм рдЦреЛрд▓рдирд╛ рд╣реИред

  "browser_action": { "default_icon": "images/icon.png", "default_popup": "views/popup.html" }, 


рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛрдб (popup.html) рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ - рдХреБрдЫ HTML рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЧреБрдгред рдореИрдВрдиреЗ рдЙрдмрд╛рдК рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдмрд╛рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХреНрд░реЛрдо рдиреЙрдХрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", 


рдиреЙрдХ-рдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-eval рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд┐рд╡рд░рдг ред

рдЫрд╡рд┐

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

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

рдЕрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
рдЫрд╡рд┐

рдпрд╣ рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рдпреВрдЖрдИ рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред Chrome рдиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдкреГрд╖реНрда рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдФрд░ рд░реЗрдХ рд▓рдЧрд╛рдпрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ)ред рд╕рднреА рд╕рдВрдЪрд╛рд░ рд╕рдВрдЧрдд Chrome API рдФрд░ рдХреЗрд╡рд▓ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред

рдХреЙрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

  chrome.extension.sendMessage({ method: "GetAllDevices" }, (allDevices: DeviceStatus[]) => { if (!allDevices || allDevices.length == 0) { console.info("Received empty device list"); return; } ... }); 


рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдкреГрд╖реНрда рдкрд░, рдПрдХ рдЫреЛрдЯреА рдмрд╛рдЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдХреИрдЯрд░ рдХрд░рддреА рд╣реИ:

 var server = new Controller(); chrome.extension.onMessage.addListener( function (request: any, sender: any, sendResponse: (result: any) => void ) { return server[request.method].call(server, request.data, sendResponse); }); 


рдХрдИ рдХреЙрд▓ рдирд╣реАрдВ рдЖрдП:


рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдВ рдереЛрдбрд╝реА рд╡реНрдпрд╛рдкрдХ рд╣реИрдВ:


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкрд╣рд▓реА рдмрд╛рд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдкреГрд╖реНрда рдкрд░ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рдореЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдЯрди рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рдкреЙрдкрдЕрдк рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ", рдпрд╣рд╛рдВ рдЖрдк рдбрд┐рдмрдЧрд░ рдФрд░ DOM рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреНрдпрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдореБрдЭреЗ * .map рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдпрд╛, рдФрд░ рдХреНрд░реЛрдо рдЙрдард╛рдпрд╛, рдФрд░ рдХреНрд░реЛрдо рдХрдВрд╕реЛрд▓ рдореЗрдВред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛, рд╕рд┐рд╡рд╛рдп рдПрдХ рдЪреАрдЬ рдХреЗ - рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдордЭрджрд╛рд░реА рд╕реЗ _this рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рдмрдЧрд░ рдХреЛ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдФрд░ рдЕрдХреНрд╕рд░ рдЬрдм рдореИрдВ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рдерд╛ рддреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕ рджреЗрддрд╛ рдерд╛ред рдХреБрдЫ рд╢рдВрдХреБ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдм рдХреЛ _this рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ред

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

рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рд╕реНрдерд┐рддрд┐ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛ рдЧрдИ, рдХреНрд░реЛрдо рдиреЗ рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрд▓рдЧ рдХреНрд░реЛрдо рдХреЗ рдмреАрдЪ рд╢реЗрд╖ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  private ReadState(callback: () => void): void { this.devices = []; chrome.storage.sync.get(["aid", "ds"], (storedValues: any) => { if (storedValues.aid != null && storedValues.aid != "") this.deviceId = storedValues.aid; var devicesJson = storedValues.ds; this.devices = JSON.parse(devicesJson); callback(); }); } private WriteState(): void { chrome.storage.sync.set({ "aid": this.deviceId, "ds": JSON.stringify(this.devices) }); } 


рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдЬрд╛рдХреНрд╕ рд╣реИ:
  private RequestStatus(data: any, successCallback: (status: DeviceStatus) => void , errorCallback: (error: string) => void ): void { $.ajax({ url: "https://localhost/cbs/" + data.deviceId, type: "GET", success: successCallback, error: (xhr, error) => { console.error(error); errorCallback(error); } }); } 


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

рдФрд░ рдореБрдЭреЗ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд╕реАрдирд╛ рдмрд╣рд╛рдирд╛ рдкрдбрд╝рд╛ред Chrome рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде - рдпрд╣ рдХреЗрд╡рд▓ 5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдЯреНрд░реЗ рдореЗрдВ рдмрд╕ рдПрдХ рдЫреЛрдЯреА рд╕реА рдШрдВрдЯреАред рдФрд░ рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдХрдИ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рд╡реЗрдмрдХрд┐рдЯ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

  var n = webkitNotifications.createNotification(opt.iconUrl, opt.title, opt.message); n.onclose = () => { ... }; n.show(); 


рдФрд░ рдлрд┐рд░ рдХреНрд░реЛрдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмреИрдЯрд░реА рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рд▓рдЧрд╛:
рдЫрд╡рд┐

рд╢реАрд░реНрд╖ рдкрд░ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рднреА рд╕рд░рд▓ рд╣реИ, рдХреНрд░реЛрдо рдиреЗ рдлрд┐рд░ рд╕реЗ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдФрд░ рдЖрдЗрдХрди, рдЯреВрд▓рдЯрд┐рдк рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреА рдорджрдж рд╕реЗ, рд╕рдм рдХреБрдЫ рдШрдбрд╝реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛:
  if (updateIcon) { chrome.browserAction.setIcon({ path: path }); chrome.browserAction.setTitle({ title: title }); chrome.browserAction.setBadgeText({ text: "!" }); } 


рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХреЛрдб рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд╢рд╛рджреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рд╛ред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП 12-рд╡рд░реНрдг рдХреЛрдб рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред

рд░рд╡рд┐рд╡рд╛рд░ рдХреА рдЖрдзреА рд░рд╛рдд рддрдХ, рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рддреИрдпрд╛рд░ рдерд╛ред

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

рдЕрдкрдбреЗрдЯ:
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ iOS рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ

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


All Articles