{"id":246351,"date":"2014-12-21T11:02:03","date_gmt":"2014-12-21T07:02:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=246351"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=246351","title":{"rendered":"<span class=\"post_title\">\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0445<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u0441\u0432\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0445\u043e\u0431\u0431\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c, \u044d\u0442\u043e \u043d\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0438 \u0434\u043b\u044f \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 api \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435. <br \/>  \u0418 \u0434\u0430, \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b, \u043e\u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438\u0437 Chrome!<\/p>\n<p>  <b>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/b><br \/>   \u2014 \u041e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442;<br \/>   \u2014 \u0415\u0434\u0438\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u0435\u0437\u0434\u0435 \u0432\u0441\u0435 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0418 \u0447\u0442\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u0439 \u043a\u043e\u0434, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u0435\u0433\u043a\u0443\u044e \u043e\u0431\u0435\u0440\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438.<\/p>\n<p>  \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u043a \u043f\u043e\u0434\u043e\u0431\u0438\u044e api \u0445\u0440\u043e\u043c\u0430. \u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c. \u0423\u0434\u043e\u0431\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432\u0435\u0437\u0434\u0435 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u0439 \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<h4>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h4>\n<p>  \u041e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0443 Chrome, \u043d\u043e \u0441 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438.<br \/>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/beb\/549\/36d\/beb54936dcbd46b4b6f1ab1786ff538a.png\"\/><br \/>  \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439.<\/p>\n<p>  <b>Injected page<\/b> \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 response \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<p>  <b>Popup page<\/b> \u2014 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.<\/p>\n<p>  <b>Options page<\/b> \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0442.\u0435. html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043f\u0443\u043d\u043a\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (\u0432 Chrome \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.<\/p>\n<p>  <b>Background page<\/b> \u2014 \u0444\u043e\u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u2014 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u0438 \u0432 popup menu, \u0438 \u0432 options page. \u041d\u043e \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 Injected page, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443.<br \/>  *\u0412 Firefox \u043f\u043e\u0441\u044b\u043b\u043a\u0430 \u0438\u0437 \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 popup menu \u0438 options page, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c, \u0442.\u043a. \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432 Safari \u0438 Firefox, popup page \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432 Chrome \u0438 Opera 12 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>  *\u0412 Firefox \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u0443\u044e\/\u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.<\/p>\n<p>  <b>\u041a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/b>  <\/p>\n<pre><code class=\"javascript\">mono.onMessage(function onMessage(message, response) {   console.log(message);   response(&quot;&gt; &quot;+message); }); <\/code><\/pre>\n<p>  <b>\u041a\u043e\u0434 \u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/b>  <\/p>\n<pre><code class=\"javascript\">mono.sendMessage(&quot;message&quot;, function onResponse(message) {   console.log(message); }); <\/code><\/pre>\n<p>  <b>\u041a\u043e\u0434 \u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 (\u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b):<\/b>  <\/p>\n<pre><code class=\"javascript\">mono.sendMessageToActiveTab(&quot;message&quot;, function onResponse(message) {   console.log(message); }); <\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u0441\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 Chrome.<\/p>\n<h4>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/h4>\n<p>  \u0412\u043e \u0432\u0441\u0435\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0437\u043d\u043e\u0435.<br \/>  Firefox: simple-storage.<br \/>  Opera: widget.preferences, localStorage.<br \/>  Chrome: chrome.storage.local, chrome.storage.sync, localStorage.<br \/>  Safari: localStorage.<\/p>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c.<\/p>\n<p>  <b>\u041a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c:<\/b>  <\/p>\n<pre><code class=\"javascript\">mono.storage.set({a:1}, function onSet(){   console.log(&quot;Dune!&quot;); }); mono.storage.get(&quot;a&quot;, function onGet(storage){   console.log(storage.a); }); mono.storage.clear(); <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <b>sync<\/b> \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0445\u0440\u043e\u043c\u0430, \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0430\u0447\u0435, \u0430 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.  <\/p>\n<pre><code class=\"javascript\">mono.storage.sync.set({a:1}, function onSet(){   console.log(&quot;Dune!&quot;); }); mono.storage.sync.get(&quot;a&quot;, function onGet(storage){   console.log(storage.a); }); mono.storage.sync.clear(); <\/code><\/pre>\n<h5>\u041a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/h5>\n<p>  \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">\u0431\u0440\u0430\u0443\u0437\u0435\u0440\\\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/td>\n<td colspan=\"1\" rowspan=\"1\">background<\/td>\n<td colspan=\"1\" rowspan=\"1\">options<\/td>\n<td colspan=\"1\" rowspan=\"1\">popup<\/td>\n<td colspan=\"1\" rowspan=\"1\">Injected<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Chrome<\/td>\n<td colspan=\"3\" rowspan=\"3\">localStorage<\/td>\n<td colspan=\"1\" rowspan=\"3\">localStorage via messages<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Opera 12 (localStorage)<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Safari<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Chrome (storage)<\/td>\n<td colspan=\"4\" rowspan=\"1\">chrome.storage<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Firefox<\/td>\n<td colspan=\"1\" rowspan=\"1\">Simple storage<\/td>\n<td colspan=\"3\" rowspan=\"1\">Simple storage via messages<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Opera 12<\/td>\n<td colspan=\"4\" rowspan=\"1\">widget.preferences<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0441 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u00abvia messages\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u044b\u043b\u043a\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043a \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0444\u043e\u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412 \u0438\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0438\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/p>\n<h4>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e<\/h4>\n<p>  <b>Chrome, Safari, Opera 12<\/b><br \/>  \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c mono.js \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>  <b>Firefox<\/b> (Addons-sdk only)<br \/>  \u0422\u0443\u0442 \u0432\u0441\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Addons-sdk.<br \/>  \u0412 lib\/main.js \u043d\u0443\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 require \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b monoLib.js \u0438 \u0443\u0436\u0435 \u043a \u043d\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u0442\u0430\u043a \u0436\u0435 background.js (\u0442.\u0435. \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443).<\/p>\n<p>  \u042f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 main.js \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">main.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">(function() {     var monoLib = require(&quot;.\/monoLib.js&quot;);     var ToggleButton = require('sdk\/ui\/button\/toggle').ToggleButton;     var panels = require(&quot;sdk\/panel&quot;);     var self = require(&quot;sdk\/self&quot;);      \/\/ \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 settingsBtn \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 - \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c options.html     var simplePrefs = require(&quot;sdk\/simple-prefs&quot;);     simplePrefs.on(&quot;settingsBtn&quot;, function() {         var tabs = require(&quot;sdk\/tabs&quot;);         tabs.open( self.data.url('options.html') );     });      \/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 port \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442.\u043a. options.html \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 mono.js     var pageMod = require(&quot;sdk\/page-mod&quot;);     pageMod.PageMod({         include: [             self.data.url('options.html')         ],         contentScript: '('+monoLib.virtualPort.toString()+')()',         contentScriptWhen: 'start',         onAttach: function(tab) {             monoLib.addPage(tab);         }     });      \/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043a injected page     pageMod.PageMod({         include: [             'http:\/\/example.com\/*',             'https:\/\/example.com\/*'         ],         contentScriptFile: [           self.data.url(&quot;js\/mono.js&quot;),           self.data.url(&quot;js\/inject.js&quot;)         ],         contentScriptWhen: 'start',         onAttach: function(tab) {             monoLib.addPage(tab);         }     });      \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430     var button = ToggleButton({         id: &quot;monoTestBtn&quot;,         label: &quot;Mono test!&quot;,         icon: {             &quot;16&quot;: &quot;.\/icons\/icon-16.png&quot;         },         onChange: function (state) {             if (!state.checked) {                 return;             }             popup.show({                 position: button             });         }     });      \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a \u043a\u043d\u043e\u043f\u043a\u0435 \u043f\u043e\u043f\u0430\u043f     var popup = panels.Panel({         width: 400,         height: 250,         contentURL: self.data.url(&quot;popup.html&quot;),         onHide: function () {             button.state('window', {checked: false});         }     });     \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043f\u0430\u043f \u043a monoLib *\u043f\u0440\u043e\u0448\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 onAttach     monoLib.addPage(popup);     \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 addon \u0434\u043b\u044f \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     var backgroundPageAddon = monoLib.virtualAddon();     \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 monoLib     monoLib.addPage(backgroundPageAddon);     \/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c     var backgroundPage = require(&quot;.\/background.js&quot;);     \/\/ \u043e\u0442\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 addon \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435     backgroundPage.init(backgroundPageAddon); })(); <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u043e \u0443\u0432\u044b \u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451. \u041d\u0430\u0448\u0430 \u043e\u0431\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 background.js \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043c\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0434\u0443\u043b\u044f. \u0418 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0443\u0434\u0430 mono.js.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">background.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">(function() {     \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u043b\u0438 \u044d\u0442\u043e     if (typeof window !== 'undefined') return;     \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c window (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)     window = require('sdk\/window\/utils').getMostRecentBrowserWindow();     \/\/ \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043b\u0430\u0433, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c     window.isModule = true;     var self = require('sdk\/self');     \/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 data\/js     mono = require('toolkit\/loader').main(require('toolkit\/loader').Loader({         paths: {             'data\/': self.data.url('js\/')         },         name: self.name,         prefixURI: self.data.url().match(\/([^:]+:\\\/\\\/[^\/]+\\\/)\/)[1],         globals: {             console: console,             _require: function(path) {                 \/\/ \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 require \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b mono.js                 switch (path) {                     case 'sdk\/simple-storage':                         return require('sdk\/simple-storage');                     case 'sdk\/window\/utils':                         return require('sdk\/window\/utils');                     case 'sdk\/self':                         return require('sdk\/self');                     default:                         console.log('Module not found!', path);                 }             }         }     }), &quot;data\/mono&quot;); })(); var init = function(addon) {     if (addon) {         mono = mono.init(addon);     }     console.log(&quot;Background page ready!&quot;); } if (window.isModule) {     \/\/ \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c init \u043c\u0435\u0442\u043e\u0434.     exports.init = init; } else {     \/\/ \u0435\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u044c - \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c     init(); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f init, \u0434\u0430\u043b\u0435\u0435 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 mono.<\/p>\n<p>  *\u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 scope \u0434\u0430\u0436\u0435 \u043d\u0435\u0442\u0443 window, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u041a\u043e\u0441\u0442\u044b\u043b\u0438<\/h4>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 api \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<br \/>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<ul>\n<li>mono.isFF \u2014 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Firefox;<br \/> \n<ul>\n<li>mono.isModule \u2014 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u043c\u043e\u0434\u0443\u043b\u044c;<\/li>\n<\/ul>\n<\/li>\n<li>mono.isGM \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 GreaseMonkey \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435;<br \/> \n<ul>\n<li>mono.isTM \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 Tampermonkey;<\/li>\n<\/ul>\n<\/li>\n<li>mono.isChrome \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Chrome;<br \/> \n<ul>\n<li>mono.isChromeApp \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0447\u0442\u043e \u044d\u0442\u043e chrome \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435;<\/li>\n<li>mono.isChromeWebApp \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0447\u0442\u043e \u044d\u0442\u043e chrome \u201c\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u201d (\u0440\u0430\u043d\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0445\u0440\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439);<\/li>\n<li>mono.isChromeInject \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435;<\/li>\n<\/ul>\n<\/li>\n<li>mono.isSafari \u2014 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Safari;<br \/> \n<ul>\n<li>mono.isSafariPopup \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 popup \u043e\u043a\u043d\u0435;<\/li>\n<li>mono.isSafariBgPage \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435;<\/li>\n<li>mono.isSafariInject \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435;<\/li>\n<\/ul>\n<\/li>\n<li>mono.isOpera \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 Opera 12;<br \/> \n<ul>\n<li>mono.isOperaInject \u2014 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  \u0412\u043e\u0442 \u043f\u043e \u044d\u0442\u0438\u043c \u0444\u043b\u0430\u0433\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 api \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<h4>\u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0432 Firefox<\/h4>\n<p>  \u0412 Firefox \u043b\u044e\u0431\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u044c, \u0442.\u0435. \u0444\u043e\u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430) \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0438\u0441\u044c.<\/p>\n<p>  \u041f\u043e\u0441\u044b\u043b\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 popup \u043e\u043a\u043d\u043e:  <\/p>\n<pre><code class=\"javascript\">mono.sendMessage('Hi', function onResponse(message){   console.log(&quot;response: &quot;+message); }, &quot;popupWin&quot;); <\/code><\/pre>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:  <\/p>\n<pre><code class=\"javascript\">mono.sendMessage({action: &quot;resize&quot;, width: 300, height: 300}, null, &quot;service&quot;); <\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438:  <\/p>\n<pre><code class=\"javascript\">mono.sendMessage({action: &quot;openTab&quot;, url: &quot;http:\/\/...\/&quot;}, null, &quot;service&quot;); <\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u043a\u043e\u0434, \u0443\u0432\u0435\u0440\u0435\u043d, \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u201c\u0441\u0435\u0440\u0432\u0438\u0441\u044b\u201d \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API.<\/p>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430<\/h4>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ant, \u0444\u0430\u0439\u043b \u0441\u0431\u043e\u0440\u043a\u0438 \u043b\u0435\u0436\u0438\u0442 \u0432 \u201c\/src\/vendor\/Ant\u201d. \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b.<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043a\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0443 \u043d\u0435\u0439 \u0432\u0441\u044f\u043a\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0430\u0433\u0438 \u0438 \u043d\u0435\u0434\u043e\u0447\u0435\u0442\u044b. \u041d\u043e \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0423\u0432\u0435\u0440\u0435\u043d \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0442\u0440\u0443\u0434\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u043b\u0438\u0442\u044c \u043f\u043e\u0434 \u0441\u0435\u0431\u044f.<br \/>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0432 \u0433\u0438\u0442\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f Chrome, Opera 12, Safari, Firefox. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e mono \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0432\u043e\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0445 \u0438 \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u0430 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u043e\u0439.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438!<\/p>\n<p>  <a href=\"https:\/\/github.com\/Feverqwe\/Mono\">GitHub<\/a>      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/246351\/\"> http:\/\/habrahabr.ru\/post\/246351\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u0441\u0432\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0445\u043e\u0431\u0431\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c, \u044d\u0442\u043e \u043d\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0438 \u0434\u043b\u044f \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 api \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435. <br \/>  \u0418 \u0434\u0430, \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b, \u043e\u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438\u0437 Chrome!<\/p>\n<p>  <b>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/b><br \/>   \u2014 \u041e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442;<br \/>   \u2014 \u0415\u0434\u0438\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-246351","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/246351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=246351"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/246351\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=246351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=246351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=246351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}