рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдХреЛ рд╕рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ



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

рдиреАрдЪреЗ рдореИрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг


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

localStorage.setItem('key', 'value'); 

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

 window.addEventListener('storage', function(event) { console.log(event.key); }); 

рдИрд╡реЗрдВрдЯ рдЯреИрдм рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбреЛрдореЗрди рдХреЗ рд╢реЗрд╖ рдЯреИрдм рдкрд░ рдлрд╛рдпрд░ рдХрд░рддрд╛ рд╣реИред

рднрдВрдбрд╛рд░рдг рдШрдЯрдирд╛ рдкреАрдврд╝реА

рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рд╕реЗрд╢рдирд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВ:

  • рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдУрдкреЗрд░рд╛ ~ 5 рдПрдордмреАред
  • IE ~ 4.8 MB
  • рдЖрдИрдУрдПрд╕ рд╕рдлрд╛рд░реА, рдУрдПрд╕ рдПрдХреНрд╕ рд╕рдлрд╛рд░реА ~ 2.5 рдПрдордмреАред
  • рдПрдВрдбреНрд░реЙрдЗрдб ~ 5 рдПрдордмреАред

рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдХреЛрдИ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдиреЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдпрд╣ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдУрдкреЗрд░рд╛ рдорд┐рдиреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╛рдо рдХрд░рддреА рд╣реИред

рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ


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

 const win = window.frames.target; win.postMessage('send message', 'http://javascript.ru'); 

рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЛрдИ рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓реЛрдирд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдСрдмреНрдЬреЗрдХреНрдЯ, рдПрд░реЗ, рдореИрдк, рдбреЗрдЯ ...) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди IE рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

 window.addEventListener('message', function(event) { if (event.origin != 'http://javascript.ru') { return; } console.log(event.data); }); 

рдХреЛрдИ рднреА рд╡рд┐рдВрдбреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕реНрдерд╛рди рдХреБрдЫ рднреА рд╣реЛред рдЗрд╕рд▓рд┐рдП, рдореВрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

IE рдореЗрдВ, рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗрд╡рд▓ iframes рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреИрдм рдФрд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдмреАрдЪ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рд╕рд╛рд░рдг рдЪреИрдирд▓ рдПрдкреАрдЖрдИ


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

 const bc = new BroadcastChannel('test_channel'); 

рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░рддреА рд╣реИред рддрд░реНрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред

 bc.postMessage('This is a test message.'); 

рдЬрдм рдХреЛрдИ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪреИрдирд▓ рд╕реЗ рдЬреБрдбрд╝реА рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

 bc.addEventListener('message', function (e) { console.log(e); }) 


рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред

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

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рдХрдИ рд╕рдорд╛рди рддрд░реАрдХреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MessageChannel, WebSocket) рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп - рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ ред

рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛


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

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдзреАрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ рднрд╛рд░реА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХ рдорд╣рд╛рди рд╣реИрдВ ред
рд▓реЗрдХрд┐рди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде, рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЯреИрдм рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЭрд╛ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛- jsред

 const worker = new SharedWorker('shared-worker.js'); 

рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдкрдЯрдХрдерд╛ рднреА рдЕрдкрдиреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрддреА рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЯреИрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрдЯ рдШрдЯрдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдХрд╛рд▓ рджреА рдЬрд╛рддреА рд╣реИред

 // shared-worker.js const connections = []; onconnect = function(e) { const port = e.ports[0]; connections.push(port); }; 

рдПрдХ рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЯреИрдм рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рдкрджреНрдзрддрд┐ рдмрдирд╛рдИ рдЧрдИ рдереАред

 worker.port.postMessage('test message'); 

рдЖрдк рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 worker.port.onmessage = function (e) { console.log(e.data); }; 

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

рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдФрд░ рдПрдлрдПрдл рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХрд░реНрдореА


рдпрд╣ рдПрдХ рдЗрд╡реЗрдВрдЯ-рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдЕрд╡рд░реЛрдзрди рдФрд░ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╢реНрд░рдорд┐рдХ рдкрдВрдЬреАрдХрд░рдг:

 if ('serviceWorker' in navigator) { navigator.serviceWorker.register('service-worker.js') .then(function() { return navigator.serviceWorker.ready; }) .catch(function(error) { console.error('registration error : ', error); }); } 

рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЯреИрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд┐рдВрдХрдЯреИрдмрд╕реНрдЯреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 self.addEventListener('message', function(e){ const data = e.data; const tabId = e.source.id self.syncTabState(data, tabId); }); 

SendTabState рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЯреИрдм рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 self.sendTabState = function(client, data){ client.postMessage(data); } 

рд╡рд┐рд╕реНрддреГрдд рдЙрдкрдпреЛрдЧ рдФрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ ред

рд╕рднреА рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред

рд╕реЗрд╡рд╛ рдХрд░реНрдордЪрд╛рд░реА IE рдФрд░ рдУрдкреЗрд░рд╛ рдорд┐рдиреА рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝


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


рдЙрдирдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╣рдореЗрд╢рд╛ рд╕рдВрдХреАрд░реНрдг рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдЗрдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдиреЗрддреНрд░рд╣реАрди рдХрд░реЗрдВред


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

рд╕рд╛рдЭрд╛ рд░рд╛рдЬреНрдп рддрд╛рд▓реЗ рдФрд░ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВред

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

рдореИрдВ рдкреЛрд╕реНрдЯрд░ рдЯреАрдо рдХреЛ рдЙрдирдХреА рдорджрдж рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ!

рдкреНрд░рдпреБрдХреНрдд рд▓реЗрдЦ:

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


All Articles