рдПрдХ рд╢рд╛рдо, рдХрд╛рдо рдЫреЛрдбрд╝рдХрд░, рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рд▓реЗрдХрд░ рдЖрдпрд╛ред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдореБрджреНрд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдмрд╛рдж рдореЗрдВ рдерд╛ - рдореИрдВ рдШрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рднреА рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдореИрдВрдиреЗ рд╕рдбрд╝рдХ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЦреИрд░, рдореИрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рд▓рдЧ рдЧрдпрд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ 35 рд╕реЗ рдЕрдзрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди 20 рдкреГрд╖реНрда рдХрд╣рд╛рдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЗрд╕ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рдЧрдпрд╛, рдЬреЛ рдкреЛрд╕реНрдЯ рдХреЛ рдХреНрд░рдорд╢рдГ рд╕рдВрдХреАрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╕рдорд╛рди рд╣реИрдВред
рдореИрдВрдиреЗ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреА рд╣реИ, рд╣рдмреНрдмрд░рдмреНрд░ рдореЗрдВ рдореИрдВ рдирдпрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреНрд░рд┐рдВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдЦ рдХреЛ
рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛, рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХрдо рд╣реЛ рдЧрдП, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ, рд╡реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдмрдиреА рд░рд╣реАрдВ рдФрд░ рдкрд╛рда рд╕рдВрдХреАрд░реНрдг рдерд╛, рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдЫрд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ -
HabraPrint ред
рдЖрдк рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрдЯрди рджрдмрд╛рдПрдВ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред
рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдореБрдЭреЗ рд╕рд╣реА рдХрд░ рджреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдЧрд▓рддреА рдХреАред
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ:
рд╣рдо рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдмрд╛рдж рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВрдЧреЗред
рдЕрдЧрд▓рд╛, рдкрд╣рд▓реЗ рдПрдХ
рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
рдпрд╣рд╛рдВ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред
{ "name": "HabraPrint", "version": "0.1", "description": " habrahabr.ru", "icons": { "128": "img/icon_128.png", "64": "img/icon_64.png", "48": "img/icon_48.png", "32": "img/icon_32.png", "16": "img/icon_16.png" }, "minimum_chrome_version":"6.0", "permissions": [ "tabs","http://habrahabr.ru/*", "https://habrahabr.ru/*"], "background_page": "background.html", "content_scripts": [ { "js": [ "js/jquery-1.7.1.min.js","js/content.js" ], "css": ["css/content.css"], "run_at": "document_end", "matches": [ "http://habrahabr.ru/*", "https://habrahabr.ru/*" ] } ], "page_action": { "default_icon": "img/icon_19.png", "default_title": "HabrPrint" }, "options_page": "options.html" }
рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:
рдирд╛рдо - рд╡рд┐рд╕реНрддрд╛рд░ рдирд╛рдо
рд╕рдВрд╕реНрдХрд░рдг - рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг
рд╡рд┐рд╡рд░рдг - рдЖрдкрдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЖрдЗрдХрди - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдЗрдХрди рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ <
key / size>: <
value / path to the image>





minimal_chrome_version - рдиреНрдпреВрдирддрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ
рдЕрдиреБрдорддрд┐рдпрд╛рдБ - рдпрд╣рд╛рдБ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕ рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб_рдкреЗрдЬ - рдкреГрд╖реНрда рдкрд░ рдЙрд╕ рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
content_scripts - рдкреГрд╖реНрда рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛
page_action - рдпрд╣ рдЧреБрдг рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдЯрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдЗрдХрди рдФрд░ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
options_page - рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдХрд╛ рдкрде
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреИрд╕реЗ рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВред
рдЕрдм рд╣рдо рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓
рдкреГрд╖реНрдарднреВрдорд┐_рдкреГрд╖реНрда рдмрдирд╛рддреА
рд╣реИ :
<!DOCTYPE html> <html> <head> <script src="js/background.js"></script> </head> </html>
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдлрд╝реНрд░реЗрдо рд╣реИ, рдФрд░ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдиреЗрдХреНрд╢рди рд╣реИ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ
background.js chrome.tabs.onCreated.addListener(function(tab){ urlDetected(tab.id, null, tab); }); chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ if(changeInfo.status=='complete'){ urlDetected(tabId, changeInfo, tab); } }); function urlDetected(tabId, changeInfo, tab){ chrome.tabs.getSelected(null,function(tab) { var re=/.+habrahabr.+\/(\d+)\//; if(re.test(tab.url)){ chrome.pageAction.show(tabId); }else{ chrome.pageAction.hide(tabId); } }); } chrome.pageAction.onClicked.addListener(function(tabId) {
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдЯреИрдм рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдбреЛрдореЗрди рдФрд░ рдирдВрдмрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП url рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ), рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдЗрдХрди рджрд┐рдЦрд╛рддрд╛ рдпрд╛ рдЫрд┐рдкрд╛рддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рд╕реНрддрд╛рд░
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдЖрдк рдПрдХ рд╣реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдпрд╛ рдкреЙрдк-рдЕрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХред


рдЪреВрдВрдХрд┐ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ (рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб_рдкреЗрдЬ) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереА, рдпрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдЙрд╕реА рд╡рд┐рдВрдбреЛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
function PrintIt(){ if(wnd){ wnd.close(); } stext=''; chrome.tabs.getSelected(null, function(tab) { chrome.tabs.sendRequest(tab.id, { type:'returnHtml' }, function(response) { stext=response.html; wnd=window.open("", "habrPrint", 'statusbar=no,toolbar=no,scrollbars=yes,resizable=yes''); wnd.document.write("<!DOCTYPE html>\ <html lang='ru'>\ <head>\ <meta content='text/html; charset=utf-8' http-equiv='Content-Type'>\ <meta content='ru' name='language'>\ <title>"+response.title+"</title>\ <link href=\"/css/print.css\"rel=\"stylesheet\"type=\"text/css\" media=\"all\"/></style>\ </head>\ <body onclick=\"window.close()\">\ <div class='post'>"); wnd.document.write(stext); wnd.document.write("</div><body></html>"); wnd.document.close(); setTimeout(function(){ wnd.print(); wnd.close(); }, 100) }); }); }
рдлрд┐рд░ рдореИрдВрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп window.open рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ HTML рдХреЛ рдкреЛрд╕реНрдЯ рдкрд╛рда рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд╕реЗ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде, рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рдЬрд╡рд╛рдм рдореЗрдВ рд╣рдо рдкреЛрд╕реНрдЯ рдХреЗ рднреАрддрд░ рдХрд╛ HTML рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ wnd.document.write () рд╡рд┐рдВрдбреЛ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдЖрдЧреЗ, рд╣рдо рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ:
var getElementsByClassName = function(getClass){ if(document.querySelectorAll) { return document.querySelectorAll("." + getClass); } else if(document.getElementsByClassName) { return document.getElementsByClassName(getClass); } else { var list = document.getElementsByTagName('*'), i = list.length, classArray = getClass.split(/\s+/), result = []; while(i--) { if(list[i].className.search('\\b' + classArray + '\\b') != -1) { result.push(list[i]); } } return result; } }; function pageCleaner(){ $('body *').removeClass('habrNoPrint').removeClass('habrPrint'); } function printSame(){ $('body *').addClass('habrNoPrint'); $('#layout, .content_left, .company_post, .post, .post *').removeClass('habrNoPrint'); $('.content_left').addClass('habrPrint'); window.print(); window.setTimeout(pageCleaner, 0); } chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { if(request.type == 'print-same'){ printSame(); } if(request.type == 'returnHtml'){ var elem=getElementsByClassName('post')[0]; var title=document.getElementsByTagName('title')[0]; sendResponse({'html':elem.innerHTML,'title':title.innerHTML}); } });
рдпрд╣рд╛рдВ рд╣рдо рдЕрдиреБрд░реЛрдз рд╢реНрд░реЛрддрд╛ рдХреЛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░, рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВред
рдХреЗрд╡рд▓ рджреЛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ, рдпрд╛ рддреЛ рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ html рдкреЛрд╕реНрдЯ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореИрдВ рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рдд, рдореИрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЫрд┐рдкрд╛рдирд╛ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рд▓рд┐рдЦреЗрдВрдЧреЗред
Options.html рдореЗрдВ рд╣рдо рдкреЗрдЬ рдлреНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ
<!DOCTYPE html> <html lang='ru' xml:lang='ru' xmlns='http://www.w3.org/1999/xhtml'> <head> <meta content='text/html; charset=utf-8' http-equiv='Content-Type'> <meta content='ru' name='language'> <style>@import "css/options.css";</style> <script src="js/options.js"></script> </head> <body> <header> <h3>:</h3><span id="options_callback"></span> </header> <div id='habrPrint_options'> <form name="habr_options_form"> <div class='options_form'> <div> <input id="radio_popup" type="radio" name="window" value='popup' checked="checked"/> <label id="append-label"> </label> <p> </p> </div> <div> <input id="radio_same" type="radio" name="window" value='same' /> <label id="append-label"> </label> <p> , , 5- </p> </div> </div> </form> <div class="button"> <div class="button_blue"> <button id="save"></button> </div> </div> </div> </body> </html>
рдХреЗрд╡рд▓ рдХреБрдЫ рд░реЗрдбрд┐рдпреЛ рдмрдЯрди рд╣реИрдВ рдЬреЛ рдкреНрд░рд┐рдВрдЯ рдореЛрдб рдФрд░ рд╕реЗрд╡ рдмрдЯрди рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ
css / options.css рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреГрд╖реНрда рд╕рд╛рдордиреЗ рдЖрдпрд╛:
рд╡рд┐рдХрд▓реНрдк.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
function getRadioGroupValue(radioGroupObj) { for (var i=0; i < radioGroupObj.length; i++) if (radioGroupObj[i].checked) return radioGroupObj[i].value; return null; } function readProperty(property, defValue) { if(localStorage[property] == null) { return defValue; } return localStorage[property]; } window.addEventListener("load", function(){ chrome.tabs.getSelected(null, function(tab) { var save = document.getElementById("save"); if(localStorage["radio"]){ document.getElementById("radio_"+localStorage["radio"]).checked =readProperty("radio", false); } save.addEventListener("click", function(){ var radio_value = getRadioGroupValue(document.habr_options_form.window); localStorage["radio"] = radio_value; if(localStorage["radio"]){ var sum=document.getElementById('options_callback'); sum.innerHTML=' ' } }); }); });
рд╣рдо рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реЗрд╡ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡реИрд▓реНрдпреВ рдПрдВрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рд╣реИ рдЬреЛ рдЬреЛрдбрд╝реЗ рдХреЛ "рдирд╛рдо", "рдорд╛рди" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдорд╛рди рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд┐рдЦреЗрдВ:
localStorage["radio"] = radio_value;
рдпрд╣, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
рдЯреИрдм "рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ" (рдЯреВрд▓-> рдПрдХреНрд╕рдЯреЗрдВрд╢рди) рдкрд░ рдЬрд╛рдПрдВ, "рдбреЗрд╡рд▓рдкрд░ рдореЛрдб" рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдФрд░ рдЕрдирдкреИрдХ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, habrahabr рдкрд░ рдХрд┐рд╕реА рднреА рдкреЛрд╕реНрдЯ рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреА рдЬреИрд╕реЗ "рдЖрдкрдХреЛ рдЯреИрдм рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдкреНрд░рдХрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ", рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛, рдЕрдЧрд░ рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
Google Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди FAQGoogle Chrome рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВрдПрдХреНрд╕рдЯреЗрдВрд╢рди:
рдбрд╛рдЙрдирд▓реЛрдбрдкреАрдПрд╕ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓реЗрдЦрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдореБрдЭреЗ рд╕реГрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдореИрдВ рд╕реБрдЭрд╛рд╡, рд╕рдВрдкрд╛рджрди рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рднреА рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЖрдк рд╕рднреА рдХреЛ рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рджред
UPD :
bo883 рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдореИрдВрдиреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рдЬреЛрдбрд╝рд╛ (рдЕрдм рддрдХ рдпрд╣ рдХреЗрд╡рд▓ "рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ", рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ рдЬрдм рдПрдХ рд╣реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЫрдкрд╛рдИ рд╣реЛрдЧреА)ред рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХреНрд░реЛрдо рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ (<img ...>), рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЛ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрд░реЗ рдмреНрд▓реЙрдХ рддрдХ рдЦреАрдВрдЪрдирд╛, рдФрд░ рдХреЛрдб рдХреЗ рддрд╣рдд рдЪрд┐рддреНрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ z-index рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬрдм рд╣рдо рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рд╣реЛрддрд╛ рд╣реИред (
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛)