Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реЗрдм рдкреГрд╖реНрдареЛрдВ рддрдХ рдкрд╣реБрдБрдЪреЗрдВ

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

рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдВрддреНрд░ рдЖрдкрдХреЛ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред


рдЬрдм рдореИрдВрдиреЗ vk.com рд╕реЗ last.fm рддрдХ рдореНрдпреВрдЬрд╝рд┐рдХ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд░рд╛рдЬреНрдп рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ DOM рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛) рдпрд╣ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рдерд╛, рдФрд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдкрдбрд╝рд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдЦреЛрдЬреЛрдВ рдиреЗ рдПрдХ рд╡реЗрдм рдкреЗрдЬ рдореЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рд╕реНрдкрд╖реНрдЯ рддрдВрддреНрд░ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рд╣реИ:

1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд╣рдо рдкреГрд╖реНрда рддрддреНрд╡ "рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХреЗ рдбреЛрдо рдЯреНрд░реА рдореЗрдВ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрдирд╛рддреЗ рд╣реИрдВред
//  vk_inner   vk.com var script=document.createElement('script'); script.type='text/javascript'; script.src=chrome.extension.getURL("js/vk_inner.js"); 


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

 Function.addCallListener = function(func, callbacks) { var successNumber = 0, errorNumber = 0, name = func.name; return function() { var args = [].slice.call(arguments); var result, error; var props = { args: args, self: this, name: name } callbacks.before && callbacks.before(props); try { result = func.apply(this, arguments); props.successNumber = ++successNumber; props.result = result; props.status = 'success'; callbacks.success && callbacks.success(props); } catch (e) { props.errorNumber = ++errorNumber; props.error = e; props.status = 'error'; callbacks.error && callbacks.error(props); } callbacks.after && callbacks.after(props); return result; } } 


3. рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреИрдЪ рдХрд░рддреЗ рд╣реИрдВред Vk.com рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ AudioPlayer.onPlayProgress рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЗрд╕реЗ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рд╣рд░ рд╕реЗрдХрдВрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 var ARTIST_NUM = 5; var TITLE_NUM = 6; var artistElem = document.getElementById('vkScrobblerArtist'); var titleElem = document.getElementById('vkScrobblerTrackTitle'); //    audioPlayer.onPlayProgress = Function.addCallListener(audioPlayer.onPlayProgress, { after: function(props) { //    artistElem.innerHTML = audioPlayer.lastSong[ ARTIST_NUM ]; titleElem.innerHTML = audioPlayer.lastSong[ TITLE_NUM ]; } }); 


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

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


All Articles