
рд╣реЗрд▓реЛ, рд╣реИрдмрд░ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ
HTML рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?
рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛, рд╕рдореВрд╣ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдФрд░ рдкрд╛рда рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди
- рд╕рдлрд╝рд╛рд░реА рем
- рдХреНрд░реЛрдо 27
- рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ реиреи
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдУрдкреЗрд░рд╛ 15 рдмреАрдЯрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░, рддрдХрдиреАрдХ
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ ред
рд╡реЗрдмрдХрд┐рдЯ рдЗрдВрдЬрди рдореЗрдВ webkitNotifications рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреБрд░рд╛рдирд╛ рдЕрдВрдХрди рд╣реИред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдХрд╛рд░реНрдп рдЪрдХреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
- рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ;
- рдиреЛрдЯрд┐рд╕ рднреЗрдЬреЗрдВред
рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдиреЛрдЯрд┐рд╕
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
рдЕрдиреБрдорддрд┐ рдХреА рдЬрд╛рдБрдЪ
рдХреБрд▓ 3 рд╕рдВрдХрд▓реНрдк рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдБ рд╣реИрдВ:
- рдЪреВрдХ
- рдирд┐рд╖реЗрдз
- рджреА
рдЕрдиреБрдорддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ 3 рддрд░реАрдХреЗ рдорд┐рд▓реЗ:
1. Notification.permission рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдореВрд▓реНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
switch ( Notification.permission.toLowerCase() ) { case "granted":
рдиреБрдХрд╕рд╛рди:
- Google рдХреНрд░реЛрдо рдореЗрдВ, рдЕрдиреБрдорддрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдмрд╛рд╡рдЬреВрдж - "рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдорддрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЕрдиреБрдорддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП" )ред
2. рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
var currentPermission; Notification.requestPermission( function(result) { currentPermission = result } );
рдиреБрдХрд╕рд╛рди:
рдпрджрд┐ рд░рд╛рдЬреНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЬрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрдм рддрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдк рд╕реНрдЯреЗрдЯрд╕ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдереЛрдбрд╝рд╛ рд╕рдВрдХреЗрдд:
рдЖрдк рдХреЙрд▓рдмреИрдХ рдореЗрдВ рджреЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ requestPermission рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
var permission, timer = setTimeout( function() { permission = "default" }, 500 ); Notification.requestPermission( function(state){ clearTimeout(timer); permission = state } );
3. рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдХрд░
рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрдВ рдШрдЯрдирд╛рдПрдБ, рд╡рд┐рд╡рд░рдг рдмрд╛рдж рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
var notify = new Notification("test"); notify.onerror = function(){ console.log("permission state = default or denied"); };
рдиреБрдХрд╕рд╛рди:
рдпрд╣ рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
Notification.requestPermission рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрдорддрд┐ рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЪрдпрдирд┐рдд рдЕрдиреБрдорддрд┐ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
Notification.requestPermission( newMessage ); function newMessage(permission) { if( permission != "granted" ) return false; var notify = new Notification("Thanks for letting notify you"); };
рдЕрдкрдбреЗрдЯ :
kromxr рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдиреБрдорддрд┐ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ "рд╕рд┐рд╕реНрдЯрдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ред
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдорд┐рд▓реАрдВ:
var mailNotification = new Notification(" ", { tag : "ache-mail", body : ", ...", icon : "http://habrastorage.org/storage2/cf9/50b/e87/cf950be87f8c34e63c07217a009f1d17.jpg" });
рдФрд░ рдкрд░рд┐рдгрд╛рдо:

рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ:
"рдПрдВрдбреНрд░реА рдЪреЗрд░реНрдирд╢реЗрд╡" - рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╢реАрд░реНрд╖рдХ (рдЖрд╡рд╢реНрдпрдХ)рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ рдУрдПрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрд░реЙрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ 15 рдЕрдХреНрд╖рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдЯреИрдЧ - рдПрдХ рдЪреЗрди рдХреЛ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдЯреИрдЧред
рд╡рд┐рдирд┐рдореЗрдп рд╕рдорд╛рди рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИред
рд╢рд░реАрд░ - рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реАред
рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ рдУрдПрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрд░реЙрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдпрд╣ 20 рд╡рд░реНрдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред
рдЖрдЗрдХрди - рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрдиред
рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рддрд╣рдд рдХреНрд░реЛрдо рдФрд░ рд╕рдлрд╛рд░реА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдПрдБ
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрдВ 4 рдЗрд╡реЗрдВрдЯ рд╣реИрдВ:
onclickрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдирд╛ рдирд┐рдХрд╛рдп рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИред рдХреНрд░реЙрд╕ рдпрд╛ рдХреНрд▓реЛрдЬ рдмрдЯрди (рдореИрдХ рдУрдПрд╕) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
onshowрдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред
onerrorрдпрд╣ рдмрд┐рдирд╛ рдЕрдиреБрдорддрд┐ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЕрд╕реНрд╡реАрдХреГрдд) рдХреЗ рдмрд┐рдирд╛ рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
OnCloseрдЦрд┐рдбрд╝рдХреА рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдЖрдЧред
рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ рдХреНрд░реЛрдо рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬрдм рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд░реАрдмреА рдШрдЯрдирд╛ рдореЗрдВ рдЖрдЧ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИред
рдирд┐рд░реНрдгрдп рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп, рдЖрдк рд╕реВрдЪрдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╣рдЯрд╛ / рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
Chrome: рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ - рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рдЙрдиреНрдирдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рдЧреЛрдкрдиреАрдпрддрд╛ - рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рд╕реВрдЪрдирд╛рдПрдВ рджрд┐рдЦрд╛рдПрдВред
рд╕рдлрд╝рд╛рд░реА: рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ - рд╕реВрдЪрдирд╛рдПрдВред
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕: рдкреЗрдЬ рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рдкреЗрдЬ рдХреА рдЬрд╛рдирдХрд╛рд░реА - рдЕрдиреБрдорддрд┐рдпрд╛рдБ - рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рджреГрд╢реНрдп рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП
рд▓рд┐рдВрдХ