рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рд╢реБрдн рджрд┐рди, HabraHabr рдХреЗ рдкреНрд░рд┐рдп рдЖрдЧрдВрддреБрдХ!
рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рдЬреНрдЮрд╛рди рдХреЗ рдЗрд╕ рдЕрдЧрд▓реЗ рджрд┐рди (рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдо рдкрд░, рд╕реНрдХреВрд▓ рдирд╣реАрдВ) рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛,
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рддрд╣рдд, рдореИрдВ Google Chrome рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ - TabBasket (рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди рдореИрдВ рдирд╛рдореЛрдВ рдкрд░ рдмрдХрд╡рд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред рд▓реЗрдЦ рдПрдХ рдорд┐рд╢реНрд░рд┐рдд рд╢реИрд▓реА рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдкрд╛рда рдХреЗ рддрддреНрд╡ рдУрд╡рд░рд▓реИрдк, рд╕рд╛рде рд╣реА рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдФрд░ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдгред
рд╕реАрдзреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╕реАрдПрд╕рдПрд╕ рдЬреНрдЮрд╛рди рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдХреБрдЫ рдирд┐рд░реНрдгрдп рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ?
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рднреА рдХрд╛рдо рдиреЛрдЯрдкреИрдб рдпрд╛ рдЧреЗрджрд┐рдЯ рдореЗрдВ рднреА рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЖрдкрдХреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХ рдЪреБрдирддреЗ рд╣реИрдВ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рдпрд╛ рддреЛ рдиреЛрдЯрдкреИрдб ++ рдпрд╛ рдиреЗрдЯрдмреАрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ; рдкрд╣рд▓рд╛ рдЖрд╕рд╛рди рд╣реИ, рджреВрд╕рд░рд╛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рд╡рд┐рдХрд▓реНрдк рд╣рдореЗрд╢рд╛ рдЖрдкрдХрд╛ рд╣реИ)ред
рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдБрдЪреЛ
рдкрд╣рд▓реА рдмрд╛рддреЗрдВ рдкрд╣рд▓рд╛
рд╕реНрд░реЛрдд ред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ (рдлрд┐рд░, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд▓реЗрдЦ рд╕реЗ), рддреЛ рдЖрдЗрдП рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рдХрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:
{
"name" : "TabBasket " ,
"version" : "1.5" ,
"permissions" : [
"tabs" , "http://*/*"
],
"background_page" : "back.html" ,
"browser_action" : {
"default_title" : "Closed tabs" ,
"default_icon" : "icon.png" ,
"popup" : "popup.html"
}
}
* This source code was highlighted with Source Code Highlighter .
рджреЛ рддрддреНрд╡реЛрдВ back.html рдФрд░ popup.html рдХреЛ рдЖрдЧреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдЬрд╛рдВрдЪ (рдирд┐рд░реНрдорд┐рдд, рд▓рд┐рдЦрд┐рдд) рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рдХрдЯ рдореЗрдВ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЕрджреНрднреБрдд back.html рдкреГрд╖реНрда рдЫрд╛рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕рдХреА рднреВрдорд┐рдХрд╛ рдЯреИрдм рдмрдирд╛рдиреЗ, рд╣рдЯрд╛рдиреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред Popup.html рд╕реАрдзреЗ рдмрдВрдж рдЯреИрдм рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рд╣рдо back.html рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ:
/* Tab constructor function. */
function AnyTab()
{
this .id = 0
this .url = ""
this .name = ""
this .favicon = ""
}
* This source code was highlighted with Source Code Highlighter .
рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЯреИрдм рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрд░рдВрдн рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪреБрдирд╛ред рдЯреИрдм рдХреА рдЖрдИрдбреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╣реА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ), url (рдУ_рдУ рдХреНрдпрд╛ рд╣реИ?), рдирд╛рдо (рд╕рд╛рдЗрдЯ рдХрд╛ рдирд╛рдо) рдФрд░ рдлрд╝реЗрд╡рд┐рдХреЙрди (рд╕рд╛рдЗрдЯ рдЖрдЗрдХрди, рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рд╕реАрдЯреА)ред рдЖрдЧреЗ рдХреЛрдб рдкрд░
var active = []
var closedTabs = []
var maxTabCount = 15
* This source code was highlighted with Source Code Highlighter .
рд╣рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рд╕рдХреНрд░рд┐рдп (рдЦреБрд▓реЗ) рдЯреИрдм рдФрд░ рдмрдВрджред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдЯреИрдм рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рдЗрд╖реНрдЯрддрдо рд╣реИред рд╣рдо рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ
chrome.tabs.onUpdated.addListener(onTabUpdated)
chrome.tabs.onRemoved.addListener(onTabRemoved)
chrome.tabs.onCreated.addListener(onTabCreated)
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, onTabUpdated, onTabRemoved, рдФрд░ onTabCreated рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВрдбрд▓рд░ рдХреЗ рдирд╛рдо рд╣реИрдВред рдЕрдм, рдЪрд▓реЛ рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдШреВрдВрдШрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ - рдЬрдм рдЯреИрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП (рд▓рд┐рдВрдХ, рдирд╛рдо, рдЖрджрд┐)ред рдРрд╕рд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрдВрдж рдЯреИрдм рдХреА рдХреЗрд╡рд▓ рдЖрдИрдбреА рд╣реА рдСрдирдЯреИрдмреНрд░рд┐рдб рдлрдВрдХреНрд╢рди рдореЗрдВ рдЖрддреА рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЯреИрдм рдмрдВрдж рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рд╕рд░рдгреА рдореЗрдВ рдЕрдкрдиреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реИрд╕реЗ, рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЯреИрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓рд╛ рдерд╛ рддреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдбреЗрдЯрд╛ рдХреЛ рдмрдВрджрдЯреИрдмреНрд╕ рд╕рд░рдгреА рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рд╕рдХреНрд░рд┐рдп рд╕рд░рдгреА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдВрдж рдЯреИрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ onTabUpdated рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рд╣реИ (рд╕рдорд╕реНрдпрд╛ рдкрдврд╝реЗрдВ) - рдЯреИрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рддреБрд░рдВрдд рдСрдирдЯреИрдмрдХреНрд░рд┐рдПрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд╣реАрдВ рдЖрддреА рд╣реИред рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирдП рдмрдиреЗ рдЯреИрдм рдкрд░ рд╢реАрд░реНрд╖рдХ рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ, рдЖрдЗрдХрди рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдмрд╛рдж рдореЗрдВ onTabUpdated рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд╡рд░реНрдХрдЕрд░реНрд╕ рдХреА рднреВрдорд┐рдХрд╛ рдЕрдкрдбреЗрдЯрдЯреИрдм рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рднрд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ -1 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдПрдХ рдирдпрд╛ рдЯреИрдм рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЕрдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреИрдм рдХреА рдЖрдИрдбреА рдЬрд┐рд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рд╣реИ, рд╡рд╣рд╛рдВ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджреА рдЧрдИ рд╣реИред
function updateTab(index, tab) {
/* Add new tab. index = -1 passed in onTabCreated */
if (index === -1) {
var newTab = new AnyTab()
newTab.id = tab.id
newTab.url = tab.url
newTab.name = tab.title
newTab.favicon = tab.favIconUrl
active.push(newTab)
}
/* Or update tab. Find index first. */
else {
var j, tbCt = active.length
for ( j = 0; j < tbCt; j++ ) {
if ( index == active[j].id )
break
}
if ( j == tbCt ) {
console.log( "updateTab not found ID " +index)
return
}
active[j].id = tab.id
active[j].url = tab.url
active[j].name = tab.title
active[j].favicon = tab.favIconUrl || "icon.png"
}
}
* This source code was highlighted with Source Code Highlighter .
рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдкреАрдЫреЗ рд╣реИ, рдЕрдм рдереЛрдбрд╝рд╛ рджреЗрдЦреЛ рдФрд░ popup.html рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ?
рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рд╣реИ, рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдЖрдЗрдХрди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╢реАрд░реНрд╖ рдкрд░ рдЯреВрд▓рдЖрдпрд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ div рд╣реИ - рдпрд╣ рдЙрдкрдХрд░рдг рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рдмрдЯрди рд╕рдореНрдорд╛рдирдЬрдирдХ рд░реВрдк рд╕реЗ flaunted рд╣реИ - рд╕реВрдЪреА рдХреА рд╕рдлрд╛рдИред
рдЗрд╕ рдкреГрд╖реНрда рдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд░рдирд╛ рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рдпрд╣рд╛рдБ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ back.html рддрдХ рдкрд╣реБрдБрдЪ рд╣реИ, рдЕрд░реНрдерд╛рдд, chrome.extension.getBackgroundPage () рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд╣рд╛рдБ рдШреЛрд╖рд┐рдд рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЪрд░ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ:
- рд╕реВрдЪреА рдирд┐рд░реНрдорд╛рдг
- рдорд╛рдЙрд╕рдУрд╡рд░ рдФрд░ рдорд╛рдЙрд╕рдЖрдЙрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
- рд╕реВрдЪреА рдЖрдЗрдЯрдо, рд╕рд╛рде рд╣реА рдХрд░реНрд╕рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрджреНрдз, рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдереЛрдбрд╝рд╛ рдорд┐рд╢реНрд░рдг рд╣реИред
рдирд┐рд░реНрдорд╛рдг:
var back = chrome.extension.getBackgroundPage()
for ( var k = back.closedTabs.length - 1; k >= 0; k--) {
document .write ( "<div id='" + back.closedTabs[k].id + "' onclick='divClick(this)' class='divClass'>" )
document .write ( "<img src=" + back.closedTabs[k].favicon + " class='imgClass'>" )
var txtName = back.closedTabs[k].name
if (txtName.length > 40)
txtName = txtName.substr(0, 35) + "..."
document .write ( "<span class='labelClass'>" + txtName + "</span>" )
document .write ( "</div>" )
}
* This source code was highlighted with Source Code Highlighter .
рд╕рдВрдЪрд╛рд▓рдХреЛрдВ:
var divs = document .getElementsByTagName( "div" );
for ( var i = 0; i < divs.length; i++)
{
if (divs[i].id === "toolDiv" ) {
divs[i].onclick = cleanToolClick
} else {
divs[i].onmouseover = mouseOverEvent
divs[i].onmouseout = mouseOutEvent
}
}
* This source code was highlighted with Source Code Highlighter .
рд╡рд┐рдХрд╛рд╕ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП рдкрдХрдбрд╝рд╛ рдХрд┐ рдХреНрд░реЛрдо рдореЗрдВ рдПрдХ рдирдпрд╛ рдЯреИрдм рдмрдирд╛рддреЗ рд╕рдордп chrome.tabs.create рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреЛ, рд╡реИрд╕реЗ, рдЙрди рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рд▓реЗрдЦ рд╕реЗ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЭрд╛рдВрдХрдирд╛ рдЖрд╕рд╛рди рд╣реИ), рдЯреИрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ onTabCreated рдореЗрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЯреИрдм рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ!
рдЯреВрдбреВ
рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рд▓рд┐рдЦреЗрдВ! рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯреИрдм рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдкреЗрдЬ рдмрдирд╛рдирд╛ рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рдирдХ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдПрдХ рдкреЗрдЬ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ (рдкрдврд╝реЗрдВ рдЖрд▓рд╕реА)!
рдЙрдкрд╕рдВрд╣рд╛рд░
рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдШрд░реЗрд▓реВ рдФрд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рдПрдХ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╕реНрддрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреЛрдХрд░реА рдХреА рддрд░рд╣ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрд▓реЗрдЦ рдореЗрдВ рдЯреИрдм рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ, рдЬреЛ Google Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рддрддреНрд╡реЛрдВ рдХреА рдХрд░реАрдмреА рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ! рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛ HTML, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ - рдХреБрдЫ рднреА рдирд╣реАрдВ рдПрдХ рдЬреАрд╡рдВрдд рд╣рд┐рдд рдХреЗ рд╕рд╛рдордиреЗ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛!
рдФрд░ рдореИрдВ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ рдЬреЗрдПрд╕ рдХрд╛ рдирд╡рд╛рдЧрдВрддреБрдХ рдорд╛рдирддрд╛ рд╣реВрдВ!
рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ, рдкреНрд░рдпреЛрдЧ рдХрд░реЛ, рд╕реГрдЬрди рдХрд░реЛ!