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

рд╣рдо рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?
- рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ
- рдЗрд╕рдореЗрдВ, config.xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
XML рд╕рд╛рдордЧреНрд░реА:
<?xml version="1.0" encoding="UTF-8"?> <widget xmlns="http://www.w3.org/ns/widgets" id="http://faiwer.ru" version="0.9a" defaultlocale="en"> <name xml:lang="en">HabrCommentSwitcher</name> <description xml:lang="en">Habrahabr. New comment switcher</description> <description xml:lang="ru">Habrahabr. </description> <author href="faiwer.ru" email="faiwer@gmail.com">Faiwer</author> <icon src="icons/64x64.png"/> <icon src="icons/48x48.png"/> <icon src="icons/32x32.png"/> </widget>
рдЪреВрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╢реИрдХреНрд╖рд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛,
рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
- <name> рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирд╛рдо </ name>ред рдмрд╣реБрдд рд▓рдВрдмрд╛ рди рдХрд░реЗрдВ
- <рд╡рд┐рд╡рд░рдг> рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг </ рд╡рд░реНрдгрди>ред рдкрд░реНрдпрд╛рдкреНрдд рдФрд░ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ
- <рдЖрдЗрдХрди /> рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреГрд╖реНрда рдкрд░ , рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╣рд╛рдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдПрдХ рдмрдЯрди рдореЗрдВ рдЬреЛ рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реИ рддрд╛рдХрд┐ рдЧрдбрд╝рдмрдбрд╝ рди рд╣реЛ
рдХрдИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЗрдирдореЗрдВ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ config.xml рдореЗрдВ рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдирд╛рдо рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХрдИ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, index.html рдмрдирд╛рдПрдВред рдпрд╣ "рдСрдл-рд╕реНрдХреНрд░реАрди" рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрд┐рд╕реА рднреА рдЯреИрдм рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдУрдкреЗрд░рд╛ рд╣рдореЗрдВ "рдкрдХрдбрд╝" рдирд╣реАрдВ рд▓реЗрдиреЗ рджреЗрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм, рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдмреНрд░рд╛рдЙрдЬрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ config.xml рдХреЛ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдХрд░реЗрдВред рдпрджрд┐ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд╛рдкрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдПрдХ рдкреГрд╖реНрда рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдорд╛рд░рд╛ "рдбреЗрд╡рд▓рдкрд░ рдореЛрдб" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрдЧрд╛ред
UserJS
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдмреНрд▓реЙрдХ рджрд┐рдЦрд╛рдИ рджреЗрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕реЗ рд╕реНрд▓рд╛рдЗрдбрд░ рдХрд╣реВрдВрдЧрд╛)ред
- рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдПрд░реЛ рдмрдЯрди рд░рдЦреЗрдВред
- рддреАрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рд░рдЦреЗрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред
- рддреАрд░реЛрдВ рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░реЗрдВ - рдЙрдиреНрд╣реЗрдВ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдкреГрд╖реНрда рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рд╕рдм рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рдлрд╛рдЗрд▓ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╣реИрдмреНрд░рд╣реНрдм рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╛рдиреА
UserJS рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреНрд░реЛрдо UserJS рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП
Greasemonkey рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдУрдкреЗрд░рд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (F12 - рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рд▓рд┐рдкрд┐рдпреЛрдВ)ред
рдЖрдЗрдП рд╢рд╛рдорд┐рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдУрдкреЗрд░рд╛ рд╡рд╣рд╛рдВ "рдПрдореНрдмреЗрдбреЗрдб" рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЦреЛрдЬ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ habr_comment_switcher.js рдмрдирд╛рдПрдБ (рдпрд╣рд╛рдБ рдЖрдк рдХреЛрдИ рднреА рдирд╛рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ)ред рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░:
рдпреЗ рдХреЗрд╡рд▓ js рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ UserJS рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдХрдЕрдк рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдУрдкреЗрд░рд╛ рдХреЛ рд╕рдордЭрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдПрдореНрдмреЗрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ habrahabr.ru рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреИрд╕реЗ jQuery рдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рднреА рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд╡реЗ рди рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдм рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рднреА рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреЗрдЬ рдкрд░ рдХрдИ рд╣реИрдВ, рдЗрдирдореЗрдВ рд╕реЗ 5-10 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмреНрд░реЗрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд╣реИрдВ, рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВред
UPD 2. рдзрдиреНрдпрд╡рд╛рдж,
рдШреБрдЯрдиреЛрдВ ред рдпрджрд┐ рдкреГрд╖реНрда рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВред рдУрдкреЗрд░рд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
var $ = window.jQuery;
рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдм рдХреБрдЫ anon.function рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗред рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рд╛рдЗрдЯ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдЪреНрдЫреЗ рд╕реНрд╡рд╛рдж рдХрд╛ рдирд┐рдпрдо рд╣реИ:
+function( w ) { }( window );
рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрджрдд рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:
var Engine = function(){ this._init(); } Engine.prototype = { _init: function() { } }
рдЕрдм рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
if( w.location.href.indexOf( 'habrahabr.ru' ) > 0 ) { var engine = false; d.addEventListener( 'DOMContentLoaded', function() { setTimeout( function(){ engine = new Engine(); }, 1500 ); }, false ); }
рдкреГрд╖реНрда рдкрддреЗ рдХреА рдЬрд╛рдБрдЪ рддрд╛рд░реНрдХрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡реНрдпрд╛рдореЛрд╣ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдИ рдмрд╛рд░ рдЖрдпрд╛ рдерд╛ рдХрд┐ рдУрдкреЗрд░рд╛ рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдЬреЗрд╕ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреЗрдЬ рдХреЗ рдкреВрд░реЗ DOM рдЯреНрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ + 1.5 рд╕реЗрдХрдВрдбред 1.5 рд╕реЗрдХрдВрдб рдХреНрдпреЛрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрд▓рд╛рдЗрдбрд░ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рдЕрдзрд┐рдХ рднрд╡реНрдп рд░реВрдк рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдХрд╛рдо
рдЕрдм рдУрдкреЗрд░рд╛ рд╕рдмрд╕реЗ рдЙрдЪреНрдЪ рддрдХрдиреАрдХ рд╡рд╛рд▓рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдВ IE6,7,8 рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдРрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░реЗрдВ:
var d = w.document, $ = d.querySelector.bind( d ), $$ = d.querySelectorAll.bind( d )
QuerySelector рдФрд░ querySelectorAll рдкрджреНрдзрддрд┐рдпрд╛рдБ рдЖрдкрдХреЛ CSS рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ DOM рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж jQuery рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди $ рдПрдХ рддрддреНрд╡ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ $ $ рдПрдХ рд╕реВрдЪреА рд╣реИред
рд╕реВрдЪреА рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рд╣рд╛рдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЪрд▓реЛ рдкреГрд╖реНрда рдкрд░ рд╕реАрдПрд╕рдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
_cssInject: function() { var style = this._createElem( this.elem.style_inject ), text = ''; for( var i = 0, n = this.css.length; i < n; ++ i ) { text += this.css[ i ]; } style.innerHTML = text; d.head.appendChild( style ); }
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдирдпрд╛ <style /> DOM рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рдХреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрда рд╣рдорд╛рд░реЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдо рдЕрдкрдирд╛ рдЯреИрдЧ рд▓рдЧрд╛рдПрдВрдЧреЗред рдЕрдм _createElem рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
_createElem: function( data ) { var item = d.createElement( data.tagName ); if( data.attr ) { for( var rule in data.attr ) { item.setAttribute( rule, data.attr[ rule ] ); } } return item; },
рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
_initConst: function() { this._extend( this, { css: [ '.__hcsc_button { border-top: 1px solid white; line-height: 22px; height: 22px; ' + 'cursor: pointer; }', '.__hcsc_button:hover { color: white; }', '.info.__hcsc_active { outline: 2px solid #222; }', ], elem: { style_inject: { tagName: 'style', attr: { id: '__habr_comment_switcher_css' } } } } ); }, _extend: function( object, extend ) { for( var name in extend ) if( extend.hasOwnProperty( name ) ) { object[ name ] = extend[ name ]; } },
рдЪрд▓рд┐рдП рдореБрдЦреНрдп рддрд░реНрдХ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╕реНрд▓рд╛рдЗрдбрд░ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рджреЛ рдмрдЯрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
_prepareSlider: function() { var slider = $( this.s.slider ); if( !slider ) { return; } this.up_button = this._createElem( this.elem.button ); this.up_button.innerHTML = 'тЦ▓'; slider.appendChild( this.up_button ); this.down_button = this._createElem( this.elem.button ); this.down_button.innerHTML = 'тЦ╝'; slider.appendChild( this.down_button ); },
рддреАрд░ рдкрд╛рда рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдЗрди рдмрдЯрди рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
_observe: function() { this.up_button.addEventListener( 'click', this._slideClick.bind( this, -1 ), false ); this.down_button.addEventListener( 'click', this._slideClick.bind( this, +1 ), false ); },
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдкрддреНрд░рдХ:
_checkItems: function() { var items = $$( this.s.info_panel ); if( !this.items || !this.items.length || !items.length || ( this.items[ 0 ] !== items[ 0 ] ) ) { this.position = -1; this.items = items; } return this.items; }, _slideClick: function( diff ) { if( this.current ) { this.current.classList.remove( this.c.active ); } if( !this._checkItems().length ) { return; } this.position += diff; if( this.position < 0 ) { this.position = this.items.length - 1; } else if( this.position >= this.items.length ) { this.position = 0; } this.current = this.items[ this.position ]; this.current.scrollIntoView( true ); this.current.classList.add( this.c.active ); }
рдЙрд╕рдХрд╛ рддрд░реНрдХ рд╕рд░рд▓ рд╣реИред рд╣рдо рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдкрд░ рд╕рднреА рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред S.info_panel (".comment.item> .info.is_new")ред рд╡рд╣ рд╣рдореЗрдВ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рднреА рд╢реАрд░реНрд╖рдХ рдмреНрд▓реЙрдХ рдвреВрдВрдврддрд╛ рд╣реИред рдлрд┐рд░, рд╣рдо рдХрд┐рд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реБрдП рдкреЗрдЬ рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЯрд┐рдкреНрдкрдгреА рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП CSS рдХреЗ рд╕рд╛рде рдПрдХ рдбрд╛рд░реНрдХ рдмреЙрд░реНрдбрд░ (рд░реВрдкрд░реЗрдЦрд╛) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдкрдбреЗрдЯ рдмрдЯрди рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рд╣рдорд╛рд░реА рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреБрд░рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд░ рдмрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрд░рд╛рдиреА рд╕реВрдЪреА рдХреЛ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред
рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ DOM рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдкрдВрдХреНрддрд┐ рд╡рд╕реНрддреБ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ редclassName, tkред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
this.current.classList.add( 'my_class' ); this.current.classList.remove( 'my_class' );
"рдбреАрдмрдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕
Dragonfly (рдбреНрд░реИрдЧрдирдлрд╝рд▓реА) рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ ctrl + shift + i (рдпрд╛ рд╕рд╣реА рдорд╛рдЙрд╕ рдмрдЯрди - "рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ") рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, "рд▓рд┐рдкрд┐рдпреЛрдВ" рдЯреИрдм рдкрд░, рд╣рдо рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ habr_comment_switcher.js рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдФрд░ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЙрдкрд▓рдмреНрдз рд╣реИ (F8, F10, F11)ред рдХрдВрд╕реЛрд▓ рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реА js- рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреГрд╖реНрда рдкрд░ "рдУрдкрди рдПрд░рд░ рдХрдВрд╕реЛрд▓" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреНрд░реИрдЧрдирдлрд╝реНрд▓реВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЗрдЬ рдкрд░ "рдЕрдкрдбреЗрдЯ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рдЯреИрдм рдкрд░ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ "рдЕрдкрдбреЗрдЯ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбреНрд░реИрдЧрдирдлреНрд▓рд╛рдИ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЫрд╛рдк рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣реЛрддреЗ рд╣реИрдВред рдЦрд╛рд╕рдХрд░ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рджред
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢
рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдХреА
рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ oex рдореЗрдВ рдмрджрд▓реЗрдВред рдпрд╣реА рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рддреИрдпрд╛рд░ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдУрдкреЗрд░рд╛ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реИ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ - рд╢рд╛рдпрдж рдЖрдкрдиреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реАред Config.xml рдФрд░ index.html рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рднреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

рдЙрдкрд╕рдВрд╣рд╛рд░
рд╣реБрд░реНрд░реЗ! рд╣рдорд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рддреИрдпрд╛рд░ рд╣реИ, рдЕрд▓реНрдлрд╛ рд╕реНрдЯреЗрдЬ рдореЗрдВред рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, Chrome рдФрд░ Greasemonkey рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛), рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдЬреЛрдбрд╝реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдпрд╛ CSS рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдЖрдк
рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдВ git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реИ рддреЛ рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред